Lock Compatibility Nedir
Lock Compatibility(Uyumluluğu), birden fazla transaction’ın aynı anda bir kaynağı(row, page) kilitleme isteği oluştuğunda gerekli kontrolü sağlar. Eğer kaynak bir transaction tarafından daha önce kilitli ise(örneğin kaynak üzerinde Exclusive Lock olduğunu farzedin) bu kaynak üzerinde lock(kilit) koymak isteyen transaction’ın koymak istediği lock’ın ilk koyulan lock çeşidi(örneğimizde Exclusive Lock) ile uyumlu olması gerekir. Eğer ikinci gelen lock isteği ilk gelen lock isteği(ikinci lock’da shared lock olsun) ile uyumlu değilse ilk lock’ın bitmesini bekler ve daha sonra bu kayda lock koyabilir.
Örneğimizde ilk lock çeşidi Exclusive Lock, ikincisi ise Shared Lock’tı. Aşağıdaki tabloda da göreceğiniz üzere Exclusive Lock hiçbir lock çeşidi ile uyumlu olmadığından ikinci lock birinci lock’ın bitmesini ve lock’ı serbest bırakmasını beklemek zorunda kalacak.
Aşağıdaki Lock uyumluluk tablosunu bulabilirsiniz.
|
IS |
S |
U |
IX |
SIX |
X |
Intent shared (IS) |
Uyumlu |
Uyumlu |
Uyumlu |
Uyumlu |
Uyumlu |
Uyumlu Değil |
Shared (S) |
Uyumlu |
Uyumlu |
Uyumlu |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Update (U) |
Uyumlu |
Uyumlu |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Intent exclusive (IX) |
Uyumlu |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu |
Uyumlu Değil |
Uyumlu Değil |
Shared with intent exclusive (SIX) |
Uyumlu |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Exclusive (X) |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Uyumlu Değil |
Yukarıdaki lock çeşitleri ile ilgili detaylı bilgiyi “SQL Server Lock(Kilit) Çeşitleri” isimli makalemde bulabilirsiniz.