"Kunci Eskalasi " adalah cara SQL menangani penguncian untuk pembaruan besar. Ketika SQL akan mengubah banyak baris, lebih efisien bagi mesin database untuk mengambil lebih sedikit, kunci yang lebih besar (misalnya seluruh tabel) daripada mengunci banyak hal yang lebih kecil (misalnya kunci baris) .
Tapi ini bisa menjadi masalah jika Anda memiliki tabel yang besar, karena mengunci seluruh tabel dapat mengunci kueri lain untuk waktu yang lama. Itulah tradeoffnya:banyak kunci granularitas kecil lebih lambat dari lebih sedikit (atau satu) kunci berbutir kasar, dan memiliki beberapa kueri yang mengunci bagian tabel yang berbeda menciptakan kemungkinan kebuntuan jika satu proses menunggu yang lain.
Ada opsi tingkat tabel, LOCK_ESCALATION
, baru di SQL 2008, yang memungkinkan kontrol eskalasi kunci. Default, "TABLE" memungkinkan kunci untuk meningkat sampai ke tingkat tabel. DISABLE mencegah eskalasi kunci ke seluruh tabel dalam banyak kasus. AUTO memungkinkan kunci tabel kecuali jika tabel dipartisi, dalam hal ini kunci hanya dibuat hingga tingkat partisi. Lihat entri blog ini untuk info lebih lanjut.
Saya menduga IDE menambahkan pengaturan ini saat membuat ulang tabel karena TABLE adalah default di SQL 2008. Perhatikan bahwa LOCK_ESCALATION tidak didukung di SQL 2005, jadi Anda harus menghapusnya jika mencoba menjalankan skrip pada 2005 contoh. Selain itu, karena TABLE adalah default, Anda dapat menghapus baris tersebut dengan aman saat menjalankan kembali skrip Anda.
Perhatikan juga bahwa, dalam SQL 2005 sebelum pengaturan ini ada, semua kunci dapat meningkat ke tingkat tabel-- dengan kata lain, "TABLE" adalah satu-satunya pengaturan pada SQL 2005.