2009-03-04 13 views
3

Veritabanına bağlantı yapan bazı yüksek düzeyli kodları sarmak için TransactionScope s yüksek düzeyde kullanıyorum.Kullanılacak veritabanı yalıtım düzeyini nasıl yüksek düzeyde belirtebilirim?

Çağrılan işlevlerden biri, yalnızca read uncommitted yalıtım düzeyinin gerekli olduğu salt okunur işlevler için kullanılan genel bir okumadır. Ancak bazı durumlarda büyük güncelleme işleminin bir parçası olarak kullanılır ve read committed daha uygun olur.

İşlevlerimi bir işlem kapsamı içinde çağırdığım en yüksek düzeyde, işlem için Yalıtım Düzeyini ayarlayabilmem gerekir mi?

cevap

4

Yalıtım seviyesini TransactionScope'un kendisinde ayarlayabilirsiniz. Demek istediğin bu mu?

using (var txn = new TransactionScope(
    TransactionScopeOption.Required, 
    new TransactionOptions 
    { 
     IsolationLevel = IsolationLevel.ReadUncommitted 
    } 
)) 
{ 
    // Your LINQ to SQL query goes here 
} 

(benim blog yazısı here çalınan kod.)

+0

sayesinde ben o cevapsız bilmiyorum SQL Server Satır güncelleştirme/Anlık İzolasyon için mükemmel bir rehberdir. – tpower

1

Bağlantı seviyesi ve deyim/işlem düzeyinde hem de İşlem İzolasyon seviyesini tanımlayabilir.

Senaryoyu doğru anlarsam, yalnızca belirli bir güncelleştirme sorgusundan önce Transaction Isolation düzeyini ayarlamayı düşünürdüm, eğer verili bağlantıdaki diğer aktivitenin çoğunluğu salt okunur bir aktivite olacaksa.

SQL Server için varsayılan yalıtım düzeyinin Okuma Takibi olduğunu unutmayın, bu nedenle bağlantı düzeyinde farklı bir yalıtım düzeyi belirlerseniz, güncelleştirmeden önce işlem/bildirim düzeyinde Komutu Oku'ya geçmeniz gerekir. .

Elbette göz önünde bulundurulması gereken bir şey, varsayılan Yalıtım Seviyesini olduğu gibi bırakmaktır. Okunan Okuma'nın genel okuma etkinliğiniz için uygun olmadığını düşündüğünüz belirli bir neden var mı?

Mantıklı? Daha fazla açıklama gerekiyorsa bana bildirin. Alkış John

açıklamalara dayanarak Updated.

Yeteri kadar yüksek bir OLTP veritabanını geliştiriyorsanız, SQL Server teknolojisi/ilkesi satır sürümleri olarak bakmak isteyebilirsiniz. Bu, bir kaydın bir sürümünü okumak için konuşmanızı sağlar. Bu teknikleri kullanırken tempdb üzerinde ek yük vardır, ancak yeterli donanım kullanıyorsanız, uygun olabilir. aşağıdaki beyaz kağıt

http://msdn.microsoft.com/en-us/library/ms345124.aspx

+2

Yapılan okuma büyük bir ekleme/silme işlemi gerçekleşirken üzerimde bloke oluyor. – tpower

İlgili konular