Eksiler:
1. Kirli okuma üretir
2. Yalnızca seçilmiş sorgu ifadeleri için geçerlidir
Artılar:
1. Bazı dosyalar, WITH (NOLOCK) ile SQL sorgu verimliliğinin %33 artabileceğini söylüyor.
2. İç birleştirme ifadeleri için kullanılabilir
Kirli okuma: Bir kullanıcı bir kaynakta değişiklik yapar, başka bir kullanıcı değiştirilmiş kaydı okur, ardından ilk kullanıcı modifikasyonu bırakır ve veri önceki modifikasyona döner; bu iki farklı sonuç kirli okumadır.
Detaylar:
SQL sorgu performansını artırmak için genel olarak ilk göz önünde bulundurulacak bir indeks oluşturmaktır. Aslında, indekslerin kurulmasının yanı sıra, SQL komutları yerleştirdiğimizde, sözdizimine WITH (NOLOCK) bölümü eklemek, çok sayıda çevrimiçi sorgu bulunan bir ortamda veri kümelerinin kilitlenme olgesini iyileştirebilir ve böylece sorgu performansını iyileştirebilir.
Ancak, (NOLOCK) ile SQL SELECT yapmanız Kirli Okumaya neden olabilir.
Mesela:
Basit SELECT'in yanı sıra, JOIN ile SELECT sözdizimi de kullanabilirsiniz. Ama DELETE, INSERT, UPDATE ve işlem gerektiren diğer komutlar geçerli değil...
Bazı dosyalar, WITH (NOLOCK) ile SQL sorgu verimliliğinin %33 artabileceğini söylüyor. WITH (NOLOCK) ekleme, SQL Server'a SELECT komutumuzun mevcut tablonun işlem kilidi durumunu dikkate almasına gerek olmadığını belirtir; bu nedenle performans önemli ölçüde artar ve veritabanı sisteminin kilit fenomeni (dead lock dahil) önemli ölçüde azalır.
Dikkat edilmesi gereken bir şey şu ki, WITH (NOLOCK) mevcut tablonun işlem kilidini dikkate almadığından, örneğin birden fazla aşamada olan bazı veriler varsa (örneğin birden fazla tablo üzerindeki işlemler - >örneğin çekme sistemleri), WITH (NOLOCK) işlem sürecini işleyen verileri görmezden gelir...
Açıkçası, NoLock kullanıldığında, işlem henüz tamamlanmamış ama değiştirilmiş verileri okumaya izin verir. Bu nedenle, işlem verilerinin gerçek zamanlı bütünlüğünü göz önünde bulundurmanız gerekiyorsa, WITH (NOLOCK) kullanmayı dikkatlice düşünmelisiniz.
İşlemleri düşünmenize gerek yoksa, WITH (NOLOCK) faydalı bir referans olabilir.
Not 1: WITH ( < table_hint > ) Tablo taramasını, sorgu optimizleyicisi tarafından kullanılan bir veya daha fazla indeks belirtir, Ya da sorgu optimizatoru tarafından bu veri tablosundan yararlanıp bu ifade için kilit modunu kullanabilirsin.
Not 2: WITH (NOLOCK) OKUMA KARARSIZ ile eşdeğerdir
|