Kilit modları

The Microsoft SQL Server Veritabanı Altyapısı locks resources using different lock modes that determine how the resources can be accessed by concurrent transactions.

Aşağıdaki tablo, kaynak kilit modları gösterir Veritabanı Altyapısı kullanır.

Kilit modu

Açıklama

Paylaşılan (s)

Değiştirme veya bir deyim gibi verileri güncelleştirmek okuma işlemleri için kullanılır.

Güncelleştirme (u)

Güncelleştirilen kaynakları kullanılır.Birden çok oturum şunlardır: Okuma, kilitleme ve potansiyel kaynakları güncelleştirmeyi sonra oluşan çıkmaz ortak biçimi engeller.

Özel (x)

INSERT, update veya delete gibi bir veri değişikliği işlemleri için kullanılır.Aynı kaynağa aynı anda birden çok güncelleştirme yapılamaz sağlar saat.

Amacı

Kilit hiyerarşisi oluşturmak için kullanılır.Hedefi kilitleri türleri şunlardır: Paylaşılan amacını (Is), özel kullanım amacını (IX) ve paylaşılan amacı ile özel (altı).

Şema

Bir işlem yaptığınızda şeması, bağımlı bir tablo yürütülüyor.Şema kilitleri türleri şunlardır: şema değiştirme (Sch-m) ve şema kararlılık (Sch-s).

Toplu güncelleştirme (bu)

Toplu kopyalama veri olduğunda kullanılır bir tablo ve tablock ipucu belirtilir.

Anahtar aralık

Seri hale getirilebilir kullanırken bir sorgu tarafından okunan satır aralık korur işlem yalıtım düzey.Diğer hareketler sorguları yeniden çalıştırılırsa, seri hale getirilebilir işlem sorguları için uygun nitelikte bir satır ekleyemiyor sağlar.

Paylaşılan kilitleri

(s) paylaşılan kilitleri (seçim) kötümser eşzamanlılık altında bir kaynak denetim okumak eşzamanlı işlemlere izin vermek.Daha fazla bilgi için bkz: Eşzamanlılık Denetim türleri.(s) paylaşılan kilitleri kaynak varken diğer hareketleri verileri değiştirebilirsiniz.Bir kaynakta paylaşılan (s) kilitleri serbest okuma işlemi tamamlanır tamamlanmaz, sürece işlem yalıtım düzey yinelenebilir okuma veya daha yüksek, ayarlamak veya kilitleme ipucu işlem süresi için paylaşılan kilitler (s) korumak için kullanılır.

Kilitleri Güncelleştir

çıkmaz, ortak bir form (u) güncelleştirme kilitleri engeller.Yinelenebilir okuma veya seri hale getirilebilir hareket, hareket üzerindeki bir paylaşılan (s) kilidi alınıyor, verileri okur kaynak (sayfa veya satır) ve ardından özel (x) kilit lock dönüştürme gerekir verileri değiştirir.İki hareket üzerinde paylaşılan modda kilitleri alırsam bir kaynak ve verileri aynı anda güncelleştirmeye çalışırsanız, bir hareket özel (x) kilit lock dönüştürmeye çalışır.özel kullanım kilidi bir hareketin diğer hareket modu paylaşılan kilit ile uyumlu olmadığı için paylaşılan modda-için-özel kullanım kilidi dönüştürme beklemeniz gerekir; Kilit bekleme oluşur.Bir özel (x) almaya ikinci hareket çalışır kilit , güncelleştirme için.Çünkü hem hareketleri özel (x) dönüştürmekte olduğunuz kilits ve her bekleniyor, paylaşılan modda bırakın başka bir hareket olan kilit, bir ölükilit oluşur.

Bu olası çıkmaz sorunu önlemek için güncelleştirmeyi (u) kilitleri kullanılır.Tek bir işlem kaynağı için bir güncelleme (u) kilidi elde etmek bir saat.Bir hareketi (u) güncelleştirme kaynak değiştirirse kilit dönüştürülen bir özel (x) kilit.

Özel kilit

Özel (x) kilitler önlemek için erişim bir kaynak eşzamanlı işlemler tarafından.Özel (x) kilit ile herhangi bir hareket verileri değiştirebilirsiniz; işlemleri yalnızca nolock ipucunu kullanımı ile gerçekleşecek veya UNCOMMITTED yalıtım düzey okuyun okuyun.

INSERT, update ve delete gibi veri değişikliği deyimleri, her iki değişiklik birleştirmek ve okuma işlemleri.deyim önce gerekli değiştirme işlemleri yapmadan önce veri almaya okuma işlemleri gerçekleştirir.Veri değişikliği deyimleri, bu nedenle, genellikle her iki isteği kilitler ve özel kilit paylaşılan.Örneğin, bir update deyim bir değiştirme tablo bir başka birleştirmek temel tablo.Bu durumda, update deyimi içinde Katıl okunan satırların paylaşılan kilitleri istekleri tablo yanında güncelleştirilen satırları üzerinde özel kilit isteniyor.

Hedefi kilitleri

The Veritabanı Altyapısı uses intent locks to protect placing a shared (S) lock or exclusive (X) lock on a resource lower in the lock hierarchy.Hedefi kilitleri adında hedefi kilitleri kilit alttaki önce alınan çünkü düzeyve bu nedenle bir alt kilit koymak amacı sinyal düzey.

Hedefi kilitleri iki amaca hizmet eder:

  • Daha yüksek değiştirme gelen diğer hareketleri önlemek için-düzey alttaki kilit kılacak şekilde kaynak düzey.

  • Verimliliğini artırmak için Veritabanı Altyapısı en yüksek kilit çakışması algılama içinde düzey taneciklik.

Örneğin, tabloya paylaşılan amaçlı kilit istenen düzey paylaşılan (s) önce sayfaları veya bu tablo içinde satır kilitleri istenir.Tabloya bir amaçlı kilit ayarını düzey sonradan bu sayfa içeren bir tablo üzerinde bir özel (x) kilidi alınıyor'dan başka bir işlem engeller.Amacı kilits çünkü performansı artırır Veritabanı Altyapısı amacı inceler kilitdüzeyinde işlem güvenli bir şekilde elde edebilir belirlemek için yalnızca tablo s bir kilit o tablo.Bu, bir hareketin tüm tablo kilitlemek, belirlemek için tablodaki her satır veya sayfa kilit incelemek için gerekliliğini ortadan kaldırır.

Hedefi kilitler ve amacı ile özel (altı) paylaşılan paylaşılan amacını (Is), özel kullanım amacını (IX) içerir.

Kilit modu

Açıklama

Paylaşılan amacını (Is)

İstenen veya alınan bazı (ancak tüm) kaynaklar hiyerarşisinde daha düşük paylaşılan kilitleri korur.

Özel kullanım amacını (IX)

Bazı (ancak tüm) kaynaklar hiyerarşisinde daha düşük üzerinde özel kilit istenen veya alınan korur.IX olduğu bir üst kümesidir ve alt düzey kaynaklar üzerinde paylaşılan kilitleri isteyen da korur.

Paylaşılan amacı ile özel (altı)

Bazı (ancak tüm) hiyerarşisi ve amacı özel kilit daha düşük tüm kaynaklar üzerinde istenen veya alınan paylaşılan kilitleri korur alt düzey kaynaklar.En üst düzey kaynak eşzamanlı Is kilitleri izin verilir.Örneğin, bir tablo üzerinde altı bir kilidi alınıyor da hedefi, değiştirilen sayfalar üzerinde özel kilit ve değiştirilen satırlar üzerinde özel kilit kapsar.Olabilir sadece bir altı kilit kaynak başına tek tek saat, diğer işlemler tarafından yapılan kaynak için güncelleştirmeleri önleme, diğer hareketleri kaynakları düşük hiyerarşisinde elde ederek okuyabilmenize rağmen tablo düzeyindeki kilitler.

Hedefi Güncelleştirmesi (ıu)

Hierachy daha düşük tüm kaynaklar üzerinde istenen veya alınan güncelleştirme kilitleri korur.IU kilitler, yalnızca sayfa kaynakları kullanılır.Güncelleştirme işlemi gerçekleşmeden, ıu kilitleri IX kilitleri için dönüştürülür.

Paylaşılan amaçlı güncelleştirme (SIU)

Bir sonucu olarak ayrı ayrı ve aynı anda her iki kilit tutan bu kilitleri alınıyor, s ve ıu kilitleri birleşimi.Örneğin, bir hareket paglock İpucu içeren bir sorgu yürütür ve sonra güncelleştirme işlemi yürütür.Sorgu paglock ipucu ile s kilit edinme ve update işlemi ıu kilit isteklerdir.

Güncelleştirme amaçlı özel (UIX)

Bir sonucu olarak ayrı ayrı ve aynı anda her iki kilit tutan bu kilitleri alınıyor, u ve IX kilitleri birleşimi.

Şema kilitleri

The Veritabanı Altyapısı uses schema modification (Sch-M) locks during a table data definition language (DDL) operation, such as adding a column or dropping a table.Sırasında saat onu tutulursa, Sch-m kilit tabloya eşzamanlı erişimi engeller.Bu Kilidi serbest bırakılıncaya kadar tüm dış işlemleri Sch-m kilit engeller anlamına gelir.

Bazı veri işleme dili tablo kesilmesi gibi (dml) işlemleri Sch-m kilitleri etkilenen tabloları için eş zamanlı işlemler tarafından erişimi engellemek için kullanın.

The Veritabanı Altyapısı uses schema stability (Sch-S) locks when compiling and executing queries.Sch-s kilitleri bulunmayan blok (x) özel kilitler de dahil olmak üzere tüm işlem kilitleri.Bu nedenle, bir tablo üzerinde kilitleri x olanlar da dahil olmak üzere diğer işlemler, bir sorgunun derlenmiş iken çalışmaya devam.Ancak, tablo üzerinde eşzamanlı ddl işlemleri ve Sch-m kilitleri alın eşzamanlı dml işlemleri gerçekleştirilemez.

Toplu güncelleştirme kilitleri

The Veritabanı Altyapısı uses bulk update (BU) locks when bulk copying data into a table, and either the TABLOCK hint is specified or the table lock on bulk load table option is set using sp_tableoption.Birden çok iş parçacığı için toplu güncelleştirme (bu) kilitleri izin toplu yükleme engel olmayan diğer işlemler sırasında aynı anda aynı tabloya veri toplu yüklemeing veri tablo erişimini.

Anahtar aralığı kilitleri

Anahtar aralık kilitleri korunmasına dolaylı olarak tarafından okunan bir kayıt kümende bulunan satır aralıknı bir Transact-SQL seri hale getirilebilir kullanırken ifade işlem yalıtım düzey.Anahtar aralık kilitleme hayalet okuma engeller.Satırlar arasında anahtar aralığı koruyarak, ayrıca hayali eklemeleri veya silmeleri içine engeller bir kayıt küme bir işlem tarafından erişilen.