KB2526959-Düzeltme: sorgu SQL Server 2008 ve SQL Server 2008 R2'de bir oturumda oluşturulan geçici tablolara başvuruyorsa uygulama performansı sorunu

Microsoft, Microsoft SQL Server 2008 R2 düzeltmelerini bir karşıdan yüklenebilen dosya olarak dağıtır. Düzeltmeler birikimli olduğundan, her yeni sürüm önceki SQL Server 2008 R2 düzeltmesi sürümüyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir.

Belirtiler

Aşağıdaki senaryoyu inceleyin:

  • Uygulama, Microsoft SQL Server 2008 ve Microsoft SQL Server 2008 R2'de bazı geçici tablolara başvuran bir sorgu çalıştırır. Geçici tablolar, saklı yordam yerine bir oturumda oluşturulur.

  • Sorgu planı önbelleğe alındı.

  • Birçok kullanıcı yüksek bir eşzamanlı ortamda aynı sorguyu çalıştırır. Örneğin, birçok kullanıcı aşağıdaki sorguyu çalıştıran bir uygulamayı kullanır:

    create table #x (col1 int) go insert into #x values (1) go select * from #x where col1 = 1 go

Bu senaryoda, uygulama performans sorunlarıyla karşılaşır.Not Bu sorunu belirleme hakkında daha fazla bilgi için "daha fazla bilgi" bölümüne bakın.

Neden

Bu sorun, sorgu metni aynı olduğunda her kullanıcı için aynı karma sepete aynı sorgu planlarının eklenmesi nedeniyle oluşur. Çok sayıda plan aynı sepete karma hale geldiğinde (karma zinciri olarak da bilinir), önbellekteki bir planı arama süresi önemli ölçüde artar ve performans sorunları oluşabilir. Buna ek olarak, çalışan iş parçacıkları ciddi bir sayaç kilidi çakışması ile karşılaşabilir ve bu çalışan iş parçacıkları doğru Zamanlayıcı ile karşılaşmadığında diğer iş parçacıkları etkilenir.

Çözüm

Not Yalnızca SQL Server 2008 R2 güncelleştirmesi kullanılabilir. SQL Server 2008 için, bu soruna geçici bir çözüm için "geçici çözüm" bölümüne bakın.

Toplu güncelleştirme bilgileri

SQL Server 2008 R2 Service Pack 1

Bu sorunla ilgili düzeltme ilk olarak SQL Server 2008 R2 Service Pack 1 için toplu güncelleştirme 1 ' de yayımlanmıştır. Bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası 'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

2544793 SQL Server 2008 R2 Service Pack 1 için toplu güncelleştirme paketi 1Not Derlemeler birikimli olduğundan, her yeni düzeltme sürümü önceki SQL Server 2008 R2 düzeltmesi sürümüyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünebilirsiniz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

2567616 SQL Server 2008 R2 Service Pack 1 ' den sonra yayınlanan SQL Server 2008 R2 derlemeleri

SQL Server 2008 R2

Bu sorunla ilgili düzeltme ilk olarak toplu güncelleştirme 7 ' de yayımlanmıştır. SQL Server 2008 R2 için bu toplu güncelleştirme paketini edinme hakkında daha fazla bilgi için, Microsoft Bilgi Bankası 'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:

2507770 SQL Server 2008 R2 için toplu güncelleştirme paketi 7 Not Derlemeler birikimli olduğundan, her yeni düzeltme sürümü önceki SQL Server 2008 R2 düzeltmesi sürümüyle birlikte gelen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. Bu düzeltmeyi içeren en son düzeltme sürümünü uygulamayı düşünebilirsiniz. Daha fazla bilgi için Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasına tıklayın:

981356 SQL Server 2008 R2 sonrasında yayımlanan SQL Server 2008 R2 derlemeleri

Durum

Microsoft bu sorunun "Uygulandığı öğe" bölümünde listelenen Microsoft ürünlerinde bulunduğunu onaylamıştır.

Geçici Çözüm

SQL Server 2008 ve SQL Server 2008 R2'de Bu soruna geçici bir çözüm için, geçici tabloların başvurularını depolanan yordamların içine taşıyın.

Ek Bilgi

Tablo temel bilgilerini oluşturma ve değiştirme hakkında daha fazla bilgi için aşağıdaki MSDN Web sitesini ziyaret edin:

Temel tablo oluşturma ve değiştirmeSayaç kilidi çakışması, SOS_CACHESTORE sayaç kilidi üzerinde yüksek çekişme ücreti olan sys.dm_os_spinlock_stats dinamik yönetim görünümünden (DMV) tanımlanabilir. Bu sorunu belirlemek için, aşağıdakine benzer bir sorgu çalıştırabilirsiniz:

select cp.bucketid, count(cp.bucketid) as BucketCount, st.text from sys.dm_exec_cached_plans cp cross apply sys.dm_exec_sql_text(cp.plan_handle) as st group by cp.bucketid, st.text having count(cp.bucketid) >1 order by BucketCount descBu sorguyu çalıştırdığınızda aşağıdaki koşullar doğruysa, performans sorunlarıyla karşılaşabilirsiniz:

  • Bu sorgu aynı sorgu metnini oluşturur.

  • Aynı bucketid sayısı büyük.Not Aynı bucketid için büyük bir sayı genellikle 1000 üzerinden.

  • Sorgular geçici tablolara başvurur

Daha fazla yardıma mı ihtiyacınız var?

Yeteneklerinizi geliştirin
Eğitimleri keşfedin
Yeni özellikleri ilk olarak siz edinin
Microsoft Insider 'a katılın

Bu bilgi yardımcı oldu mu?

Geri bildiriminiz için teşekkür ederiz!

Geri bildiriminiz için teşekkürler! Office destek temsilcilerimizden biriyle görüşmeniz yararlı olabilir.

×