Aracılığıyla paylaş


Kilitleme ipuçları

Kilitleme ipuçları, SELECT, INSERT, UPDATE tek tek Tablo başvuruları için belirtilebilir ve deyimleri DELETE.The hints specify the type of locking or row versioning the instance of the Microsoft SQL Server Database Engine uses for the table data.Tablo düzey kilitleme ipuçları, daha hassas bir denetim türlerinin bir nesne üzerinde alınan kilitlerin gerekli olduğunda kullanılabilir.Bu kilitleme ipuçları, geçerli işlem yalıtım düzey oturum için geçersiz kılar.

Belirli kilitleme ipuçlarını ve davranışları hakkında daha fazla bilgi için bkz: Tablo ipuçları (Transact-SQL).

Not

The Database Engine sorgu iyileştiricisi almost always chooses the correct locking düzey. Tablo düzey kilitleme ipuçları varsayılan kilitleme davranışını yalnızca gerekli olduğunda kullanılmasını öneririz.Bir kilitleme düzey izin vermeme eşzamanlılık olumsuz etkileyebilir.

The Database Engine might have to acquire locks when reading meta veriler, even when processing a select with a locking hint that prevents requests for share locks when reading data. Örneğin, NOLOCK ipucunu değil Sunucusu'ndan olan bir SELECT kullanarak verileri okunurken, kilitlerin paylaşmak, ancak sistem kataloğunu görünüm okunurken sometime isteği kilitlerin olabilir.Yani, engellenecek NOLOCK kullanarak bir deyim için olanaklıdır.

işlem yalıtım düzey ayarlanmışsa, aşağıdaki örnekte gösterildiği gibi SERIALIZABLEve Tablo düzey kilitleme ipucu NOLOCK kullanılan SELECT deyim, genellikle seri hale getirilebilir hareketleri korumak için kullanılan anahtar aralık kilitlerin alınır.

USE AdventureWorks;
GO
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;
GO
BEGIN TRANSACTION;
GO
SELECT Title
    FROM HumanResources.Employee WITH (NOLOCK);
GO

-- Get information about the locks held by 
-- the transaction.
SELECT  
        resource_type, 
        resource_subtype, 
        request_mode
    FROM sys.dm_tran_locks
    WHERE request_session_id = @@spid;

-- End the transaction.
ROLLBACK;
GO

Başvuran alınan yalnızca kilit HumanResources.Employee bir Şema (Sch-S) kararlılık kilit ' dir. Bu durumda, serializability artık sağlanır.

Içinde SQL Server 2008, ALTER TABLE LOCK_ESCALATION seçeneği tablo kilitlerin disfavor ve tablo üzerinde HoBT kilitler enable bölümlenmiş. Bu seçenek bir kilitleme ipucu değil, ancak olabilir ancak kilit yükseltme azaltmak için kullanılan.Daha fazla bilgi için bkz:ALTER tablo (Transact-SQL).