たくさんのinsert\select
毎回(100台のマシンが毎秒挿入/更新するように)。
1秒でもロックできないテーブルにインデックスを作成する最良の方法は何ですか?
インデックスを作成すると、リクエストがロックされて、実行できなくなります。
100万行以上の大きなテーブルです。
CREATE INDEX WITH (NOLOCK)
などのオプションはありません(クエリのNOLOCK
でさえロックがかかりますが、ヒントがない場合よりも少なくなります)。
あなたがやろうとしているのはWITH (ONLINE = ON)
です。これは、操作の最初と最後にロックを取得します(両方とも、テーブルに関連するプランの再コンパイルに関連しています-参照 Paulによるこのブログ投稿)詳細についてはランダル )。
これにより、アプリケーションでのインデックス作成の影響が大幅に軽減されますが、その影響を完全に排除する実用的な方法はありません。また、この機能は無料ではありません。EnterpriseEditionが必要です。