Düzeltme: SQL Server veritabanı kilit etkinliğini artırır performans sorunları oluşur

ÖNEMLİ: Bu makale, Microsoft Makine Çevirisi Düzenleme yazılımı tarafından tercüme edilmiş olup, yüksek olasılıkla profesyonel bir çevirmen yerine CTF teknolojisi kullanılarak, Microsoft Topluluğu tarafından düzenlenmiştir. Microsoft, Bilgi Bankamız içindeki tüm makaleleri kendi dilinizde okuyabilmeniz için size hem profesyonel çevirmenler tarafından tercüme edilen hem de makine tarafından tercüme edildikten sonra Topluluk tarafından kontrol edilen makaleler sunar. Bununla birlikte, makine tarafından tercüme edilen, hatta Topluluk tarafından kontrol edilen bir makale bile her zaman mükemmel dil kalitesinde olmayabilir. Makalede dilinizi konuşan yabancı birisinin yapabileceği türden sözcük, söz dizimi veya dilbilgisi hataları bulunabilir. Microsoft, içeriğin hatalı tercümesinin veya müşterilerimiz tarafından kullanımının doğurabileceği olası yanlış anlamalar, hatalar veya zararlardan sorumlu değildir. Öte yandan Microsoft, Makine Çevirisi Düzenleme işlemini geliştirmek amacıyla Makine Çevirisi Düzenleme yazılımını ve araçlarını sık sık güncelleştirmektedir.

Makalenin İngilizcesi aşağıdaki gibidir: 2926217
Duyuru
Varsayılan olarak, bu düzeltmenin Service Pack 1 için SQL Server 2014 içerir ve düzeltmeyi etkinleştirmek için herhangi bir izleme bayrağı eklemek zorunda değilsiniz. Çözüm bölümünde toplu güncelleştirmelerden birini yükledikten sonra bu düzeltmeyi etkinleştirmek için Microsoft SQL Server izleme bayrağı Atatürk için başlangıç parametreleri ekleyerek başlatmanız gerekmektedir.
Belirtiler
Çok sayıda işlemci içeren bir bilgisayarda Microsoft SQL Server 2014, SQL Server 2012, SQL Server 2008 veya SQL Server 2008 R2'in bir örneğini çalıştırmak varsayalım. Zaman kilit sayısı (kaynak türü = veritabanı) belirli bir veritabanında belirli bir eşiğe aşıyor için aşağıdaki performans sorunlarla karşılaşırsınız:
  • LOCK_HASH sayaç kilidi sayısı için yükseltilmiş değerleri oluşur.

    Not: Bu sayaç kilidi izleme hakkında bilgi için "Ek bilgi" bölümüne bakın.
  • Sorgular veya veritabanı kilitleri gerektiren işlemleri tamamlanması uzun sürebilir. Örneğin, aşağıdaki performans gecikmeler görebilirsiniz:
    • SQL Server oturumları
    • Bağlantılı sunucu sorgular
    • sp_reset_connection
    • Hareketleri
Not: Kilitleri listesini bulmak için (kaynak türü = veritabanı) belirli bir veritabanı üzerinde "Ek bilgi" bölümüne bakın. Eşik değeri ortama göre değişir.
Çözüm

Toplu güncelleştirme bilgileri

Sorun ilk olarak SQL Server aşağıdaki toplu güncelleştirmede giderilmiştir.

SQL Server 2008 R2 SP2 için toplu güncelleştirme 13

SQL Server 2008 SP3 toplu güncelleştirmesi 17

2014 SQL Server için toplu güncelleştirme 1

SQL Server 2012 SP1 için Toplu Güncelleştirme 9

SQL Server için toplu güncelleştirmeler hakkında

Her yeni bir toplu güncelleştirme SQL Server için tüm düzeltmeleri içerir ve tüm güvenlik, düzeltmelerini önceki toplu güncelleştirme ile birlikte. SQL Server için en son toplu güncelleştirme denetleyin:

Düzeltme bilgileri

Microsoft, desteklenen bir düzeltmeyi kullanıma sunmuştur. Ancak bu düzeltme yalnızca bu makalede anlatılan sorunu düzeltmek amacıyla hazırlanmıştır. Bu düzeltmeyi yalnızca bu sorunla karşılaşmış olan sistemlere uygulayın.

İndirilebilir bir düzeltme varsa, bu Bilgi Bankası makalesinin üst kısmında "İndirilebilir Düzeltme Kullanılabilir" bölümü bulunur. Bu bölüm görünmüyorsa, düzeltmeyi edinmek üzere Microsoft Müşteri Hizmetleri ve Destek bölümüne bir istek gönderin.

Not Ek sorunlar oluşursa veya sorun giderme gerekiyorsa, ayrı bir hizmet isteği oluşturmanız gerekebilir. Ek destek sorularına ve bu düzeltme için geçerli olmayan sorunlara normal destek ücretleri uygulanır. Tam listesi Microsoft Müşteri Hizmetleri ve destek telefon numaralarını veya ayrı bir hizmet isteği oluşturmak için aşağıdaki Microsoft Web sitesini ziyaret edin: Not "Düzeltme karşıdan kullanılabilir" formunda düzeltmenin kullanılabilir olduğu diller görüntülenir. Kendi dilinizi görmüyorsanız, bu dil için bir düzeltme mevcut değil demektir.

Durum
Microsoft bu sorunun "Aşağıdakilere Uygulanır" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.
Daha fazla bilgi
Bir uygulama SQL Server'a bir bağlantı yaptığında, önce bir veritabanı bağlamı kurar. Varsayılan olarak, bağlantı SH modunda veritabanı kilit edinmeye çalışır. SH-veritabanı kilit bağlantı durduruldu veya veritabanı içeriği bağlantı kullanım süresi boyunca değiştirilir yayımlanacaktır. Aynı veritabanı içeriği kullanan birçok etkin bağlantılar varsa, o belirli bir veritabanı için veritabanı kaynak türünün birçok kilitleri olabilir.

16 veya daha çok CPU olan bilgisayarda bölümlenmiş kilit düzen yalnızca tablo nesneleri kullanın. Ancak, veritabanı kilitleri bölümlendirilir değil. Bu nedenle, veritabanı sayısı o kadar büyük kilitler, SQL Server veritabanı üzerinde bir kilit elde etmek için daha uzun sürer. Çoğu uygulamalar bu tasarım tarafından neden olduğu sorunları yaşamazsınız. Ancak belirli bir eşiğe aşıyor tamamlanmaz, ek çalışma ve zaman gerekli kilit elde edilir. Maliyet sadece mikro saniye her ek kilit olsa da, toplam süre kilit karma demetleri bir sayaç kilidi kullanılarak korunan çünkü hızla artabilir. Bu ek CPU döngülerini neden olur ve kilit elde etmek ek çalışanları için bekler.

Bu düzeltme, başlatma sırasında izleme bayrağı T1236 etkin olduğunda veritabanı kilit bölümleme tanıtır. Veritabanı kilit bölümleme kilit listesinin derinlik yerel her bölüm içinde yönetilebilirliğini korur. Bu veritabanı kilit elde etmek için kullanılan erişim yolu önemli ölçüde iyileştirir.

LOCK_HASH sayaç kilidi izlemek için aşağıdaki sorguyu kullanabilirsiniz.
SET NOCOUNT ONCREATE TABLE #spinlock_stats([CaptureTime] datetime,[name] nvarchar(512),[collisions] bigint,[spins] bigint,[spins_per_collision] real,[sleep_time] bigint,[backoffs] int)DECLARE @counter int = 1WHILE @counter < 100      BEGIN            INSERT INTO #spinlock_stats SELECT GETDATE() as "CaptureTime" , * FROM sys.dm_os_spinlock_stats WHERE [name] = 'LOCK_HASH'            WAITFOR DELAY '00:00:05'            SET @counter +=1      ENDSELECT * FROM #spinlock_stats ORDER BY [CaptureTime]DROP TABLE #spinlock_stats
Sayaç kilidi çekişmesi SQL Server'da tanılamada ve hakkında daha fazla bilgi için aşağıdaki belgeye bakın:

Not: Bu belge SQL Server 2008 R2 için yazılmış olsa da, bilgi için SQL Server 2012 hala geçerlidir.
Referanslar
SQL Server 2012'de izleme bayraklar hakkında daha fazla bilgi için aşağıdaki TechNet Web sitesine gidin:


Kullanıcı her bir veritabanı, veritabanı kilit sayısı bulma hakkında daha fazla bilgi için bu değeri hesaplamak için aşağıdaki sorgu kullanın:
select  Resource_database_id, resource_type, request_mode, request_status,  count (*) 'LockCount' from sys.dm_tran_locks group by  Resource_database_id, resource_type, request_mode, request_status


Uyarı: Bu makalenin çevirisi otomatik olarak yapılmıştır

Özellikler

Makale No: 2926217 - Son İnceleme: 07/29/2015 18:36:00 - Düzeltme: 6.0

Microsoft SQL Server 2012 Enterprise, Microsoft SQL Server 2012 Developer, Microsoft SQL Server 2012 Standard, Microsoft SQL Server 2012 Express, Microsoft SQL Server 2012 Web, Microsoft SQL Server 2012 Service Pack 1, Microsoft SQL Server 2014 Developer, Microsoft SQL Server 2014 Enterprise, Microsoft SQL Server 2014 Standard, Microsoft SQL Server 2008 Service Pack 3, Microsoft SQL Server 2008 R2 Service Pack 2

  • kbqfe kbfix kbsurveynew kbexpertiseadvanced kbautohotfix kbhotfixserver kbmt KB2926217 KbMttr
Geri bildirim