Aracılığıyla paylaş


HAREKET YALITIM düzeyi (Transact-SQL)

Kilitleme ve satır sürüm oluşturma davranışını denetleyen Transact-SQL deyimleri bağlantı tarafından verilen SQL Server.

Konu bağlantısı simgesiTransact-SQL sözdizimi kuralları

Sözdizimi

SET TRANSACTION ISOLATION LEVEL
    { READ UNCOMMITTED
    | READ COMMITTED
    | REPEATABLE READ
    | SNAPSHOT
    | SERIALIZABLE
    }
[ ; ]

Bağımsız değişkenler

  • KAYDEDİLMEYEN OKUMA
    İfadeleri, diğer işlemler tarafından değiştirilebilir, ancak henüz kaydedilmeyen satırları okuyabilir belirtir.

    read UNCOMMITTED düzey çalışan geçerli hareket tarafından okunan veri değiştirme gelen diğer hareketleri önlemek için paylaşılan kilitleri çıkış hareketlerini değil.read UNCOMMITTED hareket de değiştirilebilir, ancak diğer hareketler tarafından kaydedilmiş değil satır okuma dan geçerli hareket önleyen özel kilit tarafından engellenmez.Bu seçeneği kümeolduğunda, kirli okuma adlı kaydedilmemiş değişikliklerini okumak mümkündür.Veri değerleri değiştirilebilir ve satır görünür veya veri kümesi hareket sonlanmadan önce kaybolur.Bu seçenek, bir işlemin tüm select deyimlerine tüm tablolarda nolock ayarlamakla aynı etkiye sahiptir.Yalıtım düzeyleri en az kısıtlayıcı budur.

    De SQL Server, hareketleri kullanarak veri kaydedilmemiş değişiklikler kirli okuma yapması korurken kilitleme çekişme küçültebilirsiniz:

    • Okuma kaydedilmiş yalıtım düzeyi ile READ_COMMITTED_SNAPSHOT veritabanı seçeneğini küme için on.

    • Anlık Görüntü yalıtım düzeyi.

  • KAYDEDİLEN OKUMA
    İfadeler değiştirildi, ancak diğer hareketler tarafından kaydedilmiş değil veri okunamıyor belirtir.Bu kirli okuma önler.Veri nonrepeatable okuma veya hayali veri kaynaklanan geçerli hareket içinde tek tek deyimleri arasındaki diğer işlemler tarafından değiştirilebilir.Bu seçenek, SQL Server varsayılan.

    Okuma kaydedilmiş davranışını READ_COMMITTED_SNAPSHOT veritabanı seçeneği ayarına bağlıdır:

    • READ_COMMITTED_SNAPSHOT kapalı (varsayılan) seçeneğine küme ise Veritabanı Altyapısı diğer satırları geçerli hareket çalışırken değiştirme hareketlerinden önlemek için paylaşılan kilitleri kullanırokuma bir operasyon.Paylaşılan da blok diğer hareket tamamlanıncaya kadar diğer hareket tarafından değiştirilen satırlar okuma from deyim kilitler.Ne zaman yayımlanacak paylaşılan kilit türü belirler.Sonraki satırda işlenmeden önce satır kilitleri serbest bırakılır.Sayfa kilitlemeleri sonraki sayfa okuyun ve deyim tablo kilitleri serbest bırakılırlar serbest bırakılırlar.

      Not

      De SQL Server 2008 R2, dosya sistemi erişimi FILESTREAM verilere izler READ_COMMITTED_SNAPSHOT yalıtım veritabanı ayarı.

      küme on, READ_COMMITTED_SNAPSHOT ise, Veritabanı Altyapısı satır sürüm oluşturma deyimbaşlangıcında vardı gibi her deyim sonucuna tutarlı anlık görüntü veri sunmak için kullanır.Kilitleri diğer hareketler tarafından güncelleştirmelerden verileri korumak için kullanılmaz.

    READ_COMMITTED_SNAPSHOT veritabanı seçeneği açık olduğunda, satır sürüm oluşturma okuma kaydedilmiş yalıtım düzeyiçalışan işlemlerde tek tek deyimleri için yerine paylaşılan kilitleme isteği için READCOMMITTEDLOCK tablo ipucu kullanabilirsiniz.

    Not

    Ne zaman küme READ_COMMITTED_SNAPSHOT seçeneği yalnızca alter database komutu yürütmeden bağlantı veritabanında izin verilir.alter database tamamlanıncaya kadar veritabanındaki diğer açık bağlantı olmalıdır.Veritabanı tek kullanıcı moduolması gerekmez.

  • YİNELENEBİLİR OKUMA
    İfadeler değiştirildi, ancak henüz diğer hareketler tarafından kaydedilmeyen veriler okunamıyor ve diğer işlemleri geçerli işlem tamamlanıncaya kadar geçerli hareket tarafından okunan verileri değiştirebilirsiniz belirtir.

    Paylaşılan kilitleri hareket her deyim tarafından okunan tüm verilerin yerleştirilir ve hareket tamamlanıncaya kadar tutulur.Bu, geçerli hareket tarafından okunan satır değiştirme gelen diğer hareketleri önler.Diğer hareketleri ifadeleri geçerli hareket tarafından verilen arama koşullarıyla yeni satır ekleyebilir.deyim geçerli hareket yeniden deneme sayısı, yeni satırlara, hayalet okuma hangi sonuçlar alır.Her deyimsonunda yayımlanan yerine hareket sonuna paylaşılan kilitler tutulmaz, eşzamanlılık varsayılan okuma kaydedilmiş yalıtım düzeyidüşük olmasıdır.Bu seçenek yalnızca gerekli olduğunda kullanın.

  • ANLIK GÖRÜNTÜ
    Herhangi bir deyim bir işlemde okunan veri hareketin başlangıcında varolan verilerin sürüm sonucuna tutarlı olması gerektiğini belirtir.Hareket, hareket başlamadan önce tamamlanmış veri değişiklikleri yalnızca tanıyabilir.Geçerli hareket başladıktan diğer hareketler tarafından yapılan veri değişiklikleri ifadeleri geçerli hareket içinde yürütmek için görünür değil.Hareketin başlangıcında vardı gibi ifadeleri bir hareket içinde kaydedilmiş verileri anlık görüntü alma gibi efekttir.

    Ne zaman bir veritabanı Kurtarılıyor dışında anlık görüntü hareketleri kilitleri veri okurken isteme.Anlık görüntü hareketleri veri okuma blok veri yazmasını diğer hareketleri yapın.Veri yazma işlemlerini blok veri okunurken gelen anlık hareketleri yapın.

    Geri alınmakta olan başka bir işlem tarafından kilitli veri okuma denemesi yapılırsa bir veritabanı kurtarmaAlma aşamasında anlık hareketleri kilit isteği.Anlık görüntü işlem, işlem geri alındı kadar engellenir.Hemen verildikten sonra kilit serbest bırakılır.

    Anlık Görüntü yalıtım düzeyikullanan bir işlem başlamadan önce ALLOW_SNAPSHOT_ISOLATION veritabanı seçeneğini küme için on olması gerekir.Anlık yalıtım düzeyi kullanan bir işlemde birden çok veritabanı verileri erişirse, ALLOW_SNAPSHOT_ISOLATION küme on her veritabanında olmalıdır.

    Bir hareket, başka bir yalıtım düzeyiile başlatılan anlık yalıtım düzeyi küme olamaz; Bunu yaparsanız, bu nedenle hareketi iptal etmesini neden olur.Bir hareket bir anlık yalıtım düzeyibaşlatır, başka bir yalıtım düzeyi değiştirmek ve anlık görüntüye geri.Verilere erişen ilk saat bir hareket başlatır.

    Anlık Görüntü yalıtım düzeyi altında çalışan bir işlem, hareket tarafından yapılan değişiklikleri görebilirsiniz.Hareket tablo üzerinde güncelleştirme gerçekleştirir ve aynı tabloselect deyim sorunları, örneğin, değiştirilmiş verileri sonuç kümesieklenecektir.

    Not

    Altında anlık görüntü yalıtım FILESTREAM veri hareketinin başında sunulan değil Transact-SQL deyim.

  • SERİ HALE GETİRİLEBİLİR
    Aşağıdakileri belirtir:

    • İfadeler değiştirildi, ancak henüz diğer hareketler tarafından kaydedilmeyen veriler okunamıyor.

    • Diğer işlemler geçerli işlem tamamlanıncaya kadar geçerli hareket tarafından okunan verileri değiştirebilirsiniz.

    • Diğer hareketleri düşen anahtar değerlerine sahip yeni satır aralık geçerli işlem tamamlanıncaya kadar tüm ifadeleri geçerli hareket içinde okunan anahtarların ekleyemezsiniz.

    Arama koşullarını bir işlemde çalıştırılan her deyim eşleşen anahtar değerleri aralık aralığı kilitleri yerleştirilir.Bu, güncelleştirmenizi veya geçerli işlem tarafından yürütülen deyimleri için uygun nitelikte herhangi bir satır eklemek diğer hareketleri engeller.Herhangi bir işlem tablolarda çalıştırılır, yani ikinci saatbunlar aynı küme satır okur.Hareket tamamlanıncaya kadar aralık kilitleri tutulur.Tüm aralıkları tuşları kilitler ve hareket tamamlanıncaya kadar kilitli tutar yalıtım düzeyleri en kısıtlayıcı olmasıdır.eşzamanlılık daha düşük olduğundan, bu seçenek yalnızca gerekli olduğunda kullanın.Bu seçenek, bir işlemin tüm select deyimlerine tüm tablolarda holdlock ayarlamakla aynı etkiye sahiptir.

Açıklamalar

yalıtım düzeyi seçeneklerden yalnızca birini küme saatolabilir ve açıkça değiştirilene kadar küme , bağlantının kalır.tablokilitleme veya sürüm farklı davranış deyim from yan tümce içinde bir tablo ipucu belirtmediği sürece hareket içinde gerçekleştirilen tüm okuma işlemleri yalıtım düzeyi belirtilen kuralları altında çalışır.

Hareket izolasyon düzeyleri üzerinde işlemleri alınan kilitlerin türünü tanımlayın.Okuma kaydedilmiş veya YİNELENEBİLİR okuma için genellikle satır kilitleri, çok sayıda sayfa veya tablo satırları okuma tarafından başvurulan, sayfa veya tablo kilitleri satır kilitleri aktarılana, ancak alınan kilitleri paylaşılan.Bunu okuduktan sonra hareketin satır değiştirilirse, hareketin satır korumak için bir özel kullanım kilidi edinme ve hareket tamamlanıncaya kadar özel kullanım kilidi korunur.YİNELENEBİLİR okuma işlemi paylaşılan kilit bir satır ve hareket vardır sonra satır değiştirir, örneğin, paylaşılan satırın kilit için özel satır kilitdönüştürülür.

Bir özel durum dışında bir yalıtım düzeyi her saat başka bir işlem sırasında geçiş yapabilirsiniz.Anlık görüntü yalıtım için herhangi bir yalıtım düzeyi değiştirme özel durum oluşur.Böylece, işlem başarısız olmasına ve geri almakneden olur.Ancak, anlık görüntü yalıtım herhangi bir diğer yalıtım düzeyiiçin başlatılan bir hareket değiştirebilirsiniz.

Bir hareketi bir yalıtım düzeyi değişikliği korunmasını sonra düzeyyeni kurallara göre okunan başka kaynaklara değiştirdiğinizde.Değişiklikten önce okunan kaynaklar önceki düzeykurallarına göre korunması devam eder.Örneğin, bir hareket okuma kaydedilmiş SERIALIZABLE için değiştirdiyseniz, değişiklikten sonra alınan paylaşılan kilitleri şimdi hareket sonuna kadar tutulur.

Nesne denetimi döndüğünde bir saklı yordam veya tetikleyiciyi, hareket YALITIM DÜZEYİNİ ayarlama kestiğiniz taktirde nesnesi çağrıldığında yalıtım düzeyi düzey etkili sıfırlanır.küme YİNELENEBİLİR okuma toplu işve toplu iş sonra yalıtım düzeyi için SERIALIZABLE ayarlar bir saklı yordam çağırırsa, denetim için toplu iş saklı yordam döndürür, örneğin, yalıtım düzeyi ayarı YİNELENEBİLİR okuma için döner.

Not

Kullanıcı tanımlı işlevler ve kullanıcı tanımlı ortak dil çalışma zamanı (clr) türleri olamaz set hareket YALITIM DÜZEYİNE yürütmek .Ancak, bir tablo ipucu kullanarak yalıtım düzeyi kılabilirsiniz.Daha fazla bilgi için, bkz. Tablo İpuçları (Transact-SQL).

Kullandığınızda sp_bindsession iki oturuma bağlamak için her oturum korur, yalıtım düzeyi ayarı.Bir oturum yalıtım düzeyi ayarını değiştirmek için hareket YALITIM DÜZEYİNİ ayarlayın'ı kullanarak, kendisine bağlı diğer oturumları ayarını etkilemez.

set hareket YALITIM DÜZEYİNE yürütmek veya çalışma saatve ayrıştırma saatzaman etkili olur.

Aşağıdaki yalıtım düzeyi altında çalışan yığınlar sorguları blok toplu yükleme işlemlerini en iyi duruma getirilmiştir:

  • ANLIK GÖRÜNTÜ

  • KAYDEDİLMEYEN OKUMA

  • Satır sürüm oluşturma'yı kullanarak okuma kaydedilmiş

Tam tersine, bu yalıtım düzeyleri blok altında çalışan sorguları yığınlarına toplu yükleme işlemleri optimize.toplu yükleme işlemleri hakkında daha fazla bilgi için bkz: Toplu alma ve verme işlemleri toplu hakkında ve Toplu alma performansı en iyi duruma getirme.

FILESTREAM etkin veritabanları aşağıdaki hareket izolasyon düzeyleri destekler.

Yalıtım düzey

Transact SQL erişim

Dosya sistem erişimi

Kaydedilmeyen okuma

SQL Server 2008

Desteklenmeyen

Kaydedilen Okuma

SQL Server 2008

SQL Server 2008

Yinelenebilir okuma

SQL Server 2008

Desteklenmeyen

Searializable

SQL Server 2008

Desteklenmeyen

Okuma kaydedilmiş anlık görüntü

SQL Server 2008 R2

SQL Server 2008 R2

Anlık görüntü

SQL Server 2008 R2

SQL Server 2008 R2

Örnekler

Aşağıdaki örnek ayarlar TRANSACTION ISOLATION LEVEL oturum.Her Transact-SQL deyim , izler, SQL Server tutan tüm paylaşılan kilitleri sonuna kadar hareket.

USE AdventureWorks2008R2;
GO
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ;
GO
BEGIN TRANSACTION;
GO
SELECT * 
    FROM HumanResources.EmployeePayHistory;
GO
SELECT * 
    FROM HumanResources.Department;
GO
COMMIT TRANSACTION;
GO