Sql Server WITH (UPDLOCK)

SQL Server’da WITH (UPDLOCK), adından da anlaşılacağı üzere “Birazdan güncelleme yapacağım, bu satırları şimdiden benim için ayır” demenin teknik yoludur.

Sadece SELECT sorgularıyla birlikte kullanılır ve okunan satırlara “Güncelleme Kilidi” (Update Lock) koyar.

Normalde bir SELECT sorgusu “Paylaşılan Kilit” (Shared Lock) kullanır. İki farklı kişi aynı anda aynı satırı SELECT edebilir. Ancak ikisi de aynı anda UPDATE etmeye kalkarsa Deadlock (Kilitlenme) oluşabilir.

UPDLOCK şunu yapar:

  • Satırı okurken “Paylaşılan” kilit yerine “Güncelleme” kilidi koyar.
  • Başka birinin bu satırı okumasına izin verir (NOLOCK veya standart SELECT ile).
  • Ancak başka birinin bu satırı güncellemesine veya başka bir UPDLOCK koymasına izin vermez.

Eğer senin UPDATE sorgun sadece ID=10 satırını hedefliyorsa:

  • ID=10 için gelen diğer tüm UPDATE veya DELETE talepleri sıraya (kuyruğa) girer.
  • ID=11, 12, 13… gibi diğer satırlara gelen UPDATE işlemleri bu durumdan etkilenmez! Onlar kendi yollarında devam ederler.

Eğer UPDATE sorgusu bir Index kullanmıyorsa ve tüm tabloyu tarayarak o satırı bulmaya çalışıyorsa (Table Scan), o zaman sadece o satır değil, tablonun büyük bir kısmı veya tamamı kilitlenebilir. Bu durumda evet, tüm tablo “kuyruğa girmiş” gibi hissedilir.

Başka makalede görüşmek dileğiyle..

“Allah, kuluna yetmez mi?”Zümer Suresi; 36. Ayet

Author: Yunus YÜCEL

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir