Her zaman kötü değil .
Tabii ki, kabul edilmemiş değerleri okumanıza izin verir (geri alınabilir ve dolayısıyla hiçbir zaman mantıksal olarak var olamaz) ve aynı zamanda değerleri defalarca okumak ya da hiç okumak gibi olaylara izin vermez.
Bu tür anomalilere maruz kalmayacağınızı garanti eden tek izolasyon seviyeleri serileştirilebilir / anlık görüntüdür. Tarama bu satıra ulaşmadan önce bir satır taşınırsa (bir anahtar güncellemesi nedeniyle) tekrarlanabilir okuma değerleri kaçırılabilir, bir anahtar güncellemesi daha önce okunmuş bir satırın ilerlemesine neden olursa, okunan taahhüt değerler altında iki kez okunabilir.
Ancak bu sorunların ortaya nolock
çıkması daha muhtemeldir, çünkü varsayılan olarak, bu izolasyon düzeyinde okunacak 64 sayfadan daha fazlasının olduğunu tahmin ettiğinde tahsisatlı bir tarama kullanır . Dizin anahtarı güncellemeleri nedeniyle satırlar arasında sayfalar arasında ilerlerken ortaya çıkan sorunların kategorisinin yanı sıra, bu ayırma siparişi taramaları da sayfa bölmeleriyle ilgili sorunlara karşı hassastır (eğer yeni atanan sayfa dosyadan daha önce ise satırların kaçırılabileceği yer) Zaten taranmış bir sayfa, dosyada daha sonraki bir sayfaya bölünmüşse, zaten taranır veya iki kez okunur).
Basit (tek tablo) En azından bu taramalar kullanımını caydırıcı ve anahtar konumda tarama sipariş almak mümkündür sorgular nolock
basitçe bir ekleyerek ORDER BY index_key
böylece sorguya Ordered
malı IndexScan
olduğunu true
.
Ancak, raporlama başvurunuzun kesin rakamlara ihtiyacı yoksa ve bu gibi tutarsızlıkların olasılığını daha fazla tolere ederse, kabul edilebilir.
Ama kesinlikle, sihirli bir "turbo" butonu olması umuduyla tüm soruları yanıtlamamalısınız. Bu izolasyon seviyesinde anormal sonuçlarla karşılaşma olasılığı yüksektir veya hiç sonuç alınmaz ("Veri hareketi nedeniyle NOLOCK ile taramaya devam edilemiyor" hatası), performansın nolock
çok daha kötü olabileceği durumlar bile vardır .