Kunci Baris
Kunci baris adalah tingkat perincian penguncian terendah yang mungkin dilakukan di SQL Server. Ini berarti satu atau lebih baris tertentu akan dikunci, dan baris yang berdekatan masih tersedia untuk dikunci dengan kueri bersamaan.
Kunci Halaman
Penguncian halaman di SQL Server akan mengunci data senilai 8K bahkan ketika kueri Anda hanya membutuhkan 10 byte dari halaman. Jadi kueri Anda akan mengunci data tambahan yang tidak Anda minta dalam kueri Anda.
Hobt Lock
Ketika sebuah tabel dipartisi dengan "SQL Server Table partitioning" ada kemungkinan satu partisi akan dikunci (Hobt adalah singkatan dari Heap atau B-Tree)
Catatan: Eskalasi kunci ke kunci HOBT dinonaktifkan secara default. jalankan ALTER TABLE MyTable SET (LOCK_ESCALATION = AUTO)
untuk mengaktifkan eskalasi kunci HOBT.
Kunci Tabel
Kunci meja akan mengunci seluruh tabel.
Apa itu Laman Data
Microsoft SQL Server mengatur semua datanya di "Halaman Data" yang dapat menampung data senilai 8K. Ini berarti bahwa untuk setiap akses data di SQL Server 8K informasi akan dibaca.
Halaman data hanya dapat berisi informasi dari satu tabel dan tata letak halaman didokumentasikan dengan baik di MSDN
Fakta bahwa SQL Server akan selalu membaca halaman data lengkap juga memberi Anda gambaran mengapa lebih suka menggunakan kunci tingkat halaman. Implikasi dari penguncian tingkat halaman adalah Anda mungkin mengunci lebih banyak data daripada yang Anda kira.
Sebagai contoh, asumsikan kita memiliki tabel dengan ukuran record total 1024 byte dengan indeks berkerumun pada bidang ID
. Saat kita menjalankan query berikut:SELECT * from MyTable (xlock) where ID = 123
tidak hanya record tersebut yang akan dikunci, tetapi (tergantung pada isi halaman) maksimal 3 record tambahan juga akan dikunci.
Kapan kunci ini diperoleh
Kueri akan diuraikan oleh gubernur kueri dan kunci yang diperlukan akan ditentukan dan diminta dari manajer kunci. SQL Server akan mencoba membuat keseimbangan antara kinerja dan pertentangan untuk menentukan strategi penguncian.
SQL Server juga mengikuti sistem "eskalasi kunci" yang akan mengurangi granularitas penguncian ketika lebih dari 5000 kunci jenis tertentu diperoleh. Lihat artikel ini tentang eskalasi kunci untuk informasi lebih lanjut.
Perilaku ini dapat diubah menggunakan petunjuk penguncian dengan penekanan pada petunjuk , dalam kueri Anda dapat menentukan per tabel jenis kunci apa yang Anda inginkan. SQL Server akan mencoba memenuhi permintaan Anda, tetapi tetap menerapkan eskalasi penguncian.