14 Ocak 2013 Pazartesi

WITH (NOLOCK) Hayat Kurtarır :)

NOLOCK Sql Server'da tablolarımızın kilitlenmesini(deadlock) olmasını engeller,normal şartlarda tablodaki crud işlemlerinde, örnek: update sorgudan cevap dönene kadar tabloyu lock(deadlock) eder başka bir işlem yapmaya izin vermez. Lock ettiği için farklı bir sorgudan değer bir önceki işlem bitmeden değer döndürmez.Bu durum orta ölçekli projelerde hissedilmese de büyük  projelerde başımızı belaya sokabilir.
Kullanımı;
select * from Customers WITH (NOLOCK)


Tablo adından sonra  "WITH (NOLOCK)" yazmamız yeterli olacaktır.fakat NOLOCK nerede kullanacağımız çok önemli buna çok dikkat etmeliyiz,eğer anlık işlemler çok ise NOLOCK kullanmanız bize avantajdan ziyade dezavantaja dönüşebilir.
Örnek verecek olursak E-ticaret sitesinden bir ürünü iki kişiye satma ihtimaliniz yüksek çünkü tabloyu lock etmediğiniz için birden çok kişi aynı ürünü satabiliriz.Tabi bu işlemleri "TRANSACTION" ile yapabilirseniz bir sıkıntı yaşamazsınız.

4 yorum: