SQL SERVER (NOLOCK) NEDİR ? NE İŞE YARAR ?


     
      Sql server’da herhangi bir tabloda kayıt üzerinde yapılan işlem sonucunda işlem sonlana kadar server sql server tarafından ‘Locking’ kilitlenir ve bu işlem sonlana kadar başka bir kullanıcının bu tablo üzerinde işlem yapılması engellenir.
      Sql server’da herhangi bir tabloda kayıt üzerinde yapılan işlem sonucunda işlem sonlana kadar server sql server tarafından ‘Locking’ kilitlenir ve bu işlem sonlana kadar başka bir kullanıcının bu tablo üzerinde işlem yapılması engellenir. Böylece aynı kayıt üzerinde kullanıcıların yaptığı işlemlerin çakışmaması için işlem sonucunda diğer kullanıcıya ‘Locking’ kilitlenen tablo açılarak kullanıcıya bir sonraki işlem için izin verilir. Küçük projelerde bu aralığı anlamanız imkansız ama aynı anda 1000’lerce işlem yapan projelerde bu farkı hissetmeniz mümkündür.

Örnek bir SQL cümlesi ile daha iyi anlayabilirsiniz. 

SELECT * FROM CUSTOMERS WITH(NOLOCK)

     Bu cümle ile artık customers tablosuna isterse milyonlarca aynı anda kayıt olsun erişme izni elde etmiş oldunuz yalnız bu işlemin size kullanım açısından avantajı olduğunu düşünsenizde kimi yerlerde dezavantaj oluşturabilmektedir. Örnek olarak bir tablo üzerinde son 1 adet kalan ürün için aynı anda 2 kişi birden işlem yapabilir ve tablo kilitli olmadığı içinde ürün aynı anda işlem yapan 2 kişiye birden hata vermeden aktarıldı. Biz örneği 2 kişiyle sınırlı tuttuk ama orta ölçekli veya büyük ölçekli projelerde aynı anda 1000’lerce vaya milyonlarca yapılacak işlemlerde ciddi karmaşalıklar çıkabilir. Bu karmaşıklığın önüne geçmek için ise ‘TRANSACTION’ kullanmanız gerekir.
Bir c# web uygulamanız varsa üstteki sorguyu Sql View e yazıp . ugulamanız da view den sorgu çekebilirsiniz .

İyi günler.



Bu blogdaki popüler yayınlar

Mongo Db Nedir ?

SQL Function ve Stored Procedure Başlangıç