Bu makale makine çevirisi ayna makalesidir, orijinal makaleye geçmek için lütfen buraya tıklayın.

Görünüm: 11079|Yanıt: 1

[Kaynak] MSSQL ile (NOLOCK) kirli okuma

[Bağlantıyı kopyala]
2020-4-3 tarihinde 10:06:04 tarihinde yayınlandı | | |
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





Önceki:Veritabanı ana kölesi gecikmesi, yanlış sorgu çözümlülüğüne yol açar
Önümüzdeki:Fiddler'ın yerel localhost 127.0.0.1 ağ taleplerini tarama yapamaması sorunu çözüldü
2020-4-5 tarihinde 14:21:36 tarihinde yayınlandı |
Feragatname:
Code Farmer Network tarafından yayımlanan tüm yazılım, programlama materyalleri veya makaleler yalnızca öğrenme ve araştırma amaçları içindir; Yukarıdaki içerik ticari veya yasa dışı amaçlarla kullanılamaz, aksi takdirde kullanıcılar tüm sonuçları ödemelidir. Bu sitedeki bilgiler internetten alınmakta olup, telif hakkı anlaşmazlıklarının bu siteyle hiçbir ilgisi yoktur. Yukarıdaki içeriği indirmeden sonraki 24 saat içinde bilgisayarınızdan tamamen silmelisiniz. Programı beğendiyseniz, lütfen orijinal yazılımı destekleyin, kayıt satın alın ve daha iyi orijinal hizmetler alın. Herhangi bir ihlal olursa, lütfen bizimle e-posta yoluyla iletişime geçin.

Mail To:help@itsvse.com