Membuat indeks pada tabel yang benar-benar sibuk

11

Kami memiliki tabel dengan banyak insert\selectsetiap waktu (seperti 100 mesin memasukkan \ memperbarui setiap detik).

Apa cara terbaik untuk membuat indeks di atas meja yang tidak dapat dikunci bahkan untuk sedetik pun?

Jika saya membuat indeks, saya yakin itu akan mengunci permintaan, dan saya tidak bisa melakukannya.

Ini meja besar dengan 1 juta baris +.

SQL pembalap
sumber

Jawaban:

12

Tidak ada opsi seperti CREATE INDEX WITH (NOLOCK)(dan bahkan NOLOCKpada permintaan mengambil kunci, hanya lebih sedikit daripada tanpa petunjuk).

Yang terbaik yang akan Anda lakukan adalah WITH (ONLINE = ON), yang masih mengambil kunci di awal dan akhir operasi (keduanya berkaitan dengan rencana kompilasi terkait dengan tabel - lihat posting blog ini oleh Paul Randal untuk lebih jelasnya ).

Ini secara signifikan akan mengurangi dampak membangun indeks pada aplikasi Anda, tetapi tidak ada cara praktis untuk sepenuhnya menghilangkan dampak itu. Selain itu, fitur ini tidak gratis: ia memerlukan Edisi Perusahaan.

Aaron Bertrand
sumber