Eksklusifitas X
kunci vs U
kunci
Pada matriks kompatibilitas kunci di bawah ini dapat dilihat bahwa X
lock hanya kompatibel dengan stabilitas skema dan tipe kunci Insert Range-Null. U
kompatibel dengan jenis kunci bersama tambahan berikut S
/IS
/RS-S
/RI-S
/RX-S
kunci matriks kompatibilitas http://i.msdn.microsoft.com/ms186396.LockConflictTable(en-us,SQL.105).gif
Perincian X
kunci
Ini diambil dengan baik di semua tingkatan. Jejak skrip dan profiler di bawah ini menunjukkan bahwa mereka berhasil dikeluarkan di tingkat baris.
CREATE TABLE test_table (id int identity(1,1) primary key, col char(40))
INSERT INTO test_table
SELECT NEWID() FROM sys.objects
select * from test_table with (rowlock,XLOCK) where id=10
Tapi baris masih bisa dibaca!
Ternyata di read committed
tingkat isolasi SQL Server tidak akan selalu mengeluarkan S
kunci, itu akan melewati langkah ini jika tidak ada risiko membaca data yang tidak terikat tanpa mereka. Artinya, tidak ada jaminan konflik kunci akan pernah terjadi.
Namun jika pilihan awal adalah with (paglock,XLOCK)
maka ini akan hentikan transaksi pembacaan sebagai X
kunci pada halaman akan memblokir IS
kunci halaman yang akan selalu dibutuhkan oleh pembaca. Ini tentu saja akan berdampak pada konkurensi.
Peringatan Lainnya
Bahkan jika Anda mengunci baris/halaman, ini tidak berarti bahwa Anda memblokir semua akses ke baris itu dalam tabel. Kunci pada baris dalam indeks berkerumun tidak akan mencegah kueri membaca data dari baris yang sesuai dalam indeks yang tidak berkerumun.