Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Kunci Eskalasi - Apa yang terjadi di sini?

"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.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ukuran baris maksimum terlampaui saat menyalin bidang varbinary(max)

  2. Akses Ditolak saat memasukkan file ke Sql Server 2012 FileTable menggunakan File.CreateFile di situs web ASP.NET

  3. Mengganti NULL dengan 0 dalam kueri server SQL

  4. Bagaimana cara mengatur properti SSRS ConsumeContainerWhitespace di Visual Studio 2008?

  5. Indeks SQL Server yang Tidak Digunakan