Belirtiler
Microsoft SQL ServerSQL Server 2012 veya SQL ServerSQL Server 2014 veritabanında birçok istatistik ve tablonuz olduğunu ve tabloların birçok sütun içerdiğini varsayalım. Bu tablolardan eşzamanlı olarak veri almak için çok sayıda geçici sorgu yürüttüğünüzde, yürütme sırasında CMEMTHREAD beklemeleriyle karşılaşabilirsiniz.
Çözüm
Toplu Güncelleştirme bilgileri
Sorun ilk olarak aşağıdaki toplu SQL Server güncelleştirmesinde düzeltilmiştir.
- Cumulative Update 2 for SQL ServerSQL Server 2014 SP1
- Cumulative Update 9 for SQL ServerSQL Server 2014
- SQL Server 2012 SP2 için Toplu Güncelleştirme 7
Öneri: SQL Server için en son toplu güncelleştirmeyi yükleyin
SQL Server için her yeni toplu güncelleştirme, önceki toplu güncelleştirmeye dahil edilen tüm düzeltmeleri ve tüm güvenlik düzeltmelerini içerir. SQL Server için en son toplu güncelleştirmeleri indirip yüklemenizi öneririz:
- SQL Server 2014 SP1 için en son toplu güncelleştirme
- SQL Server 2014 için en son toplu güncelleştirme
- SQL Server 2012 SP2 için en son toplu güncelleştirme
Daha Fazla Bilgi
SQL Server 2012'de bir sorguyu derlediğinizde veya yeniden derlediğinizde, altyapının istatistik histogramından giriş alması gerekir. Bir sistem tablosu taraması yapmamız ve ardından ilgili tabloların belirli histogramını belleğe veya önbelleğe yüklememiz gerekiyor. Bu sistem tablosu girişleri (istatistikler için) Sistem Tablosu önbelleğinde (CACHESTORE_SYSTEMROWSET) depolanır. Önbellekte bu girişleri oluşturmak için kullanılan bellek nesnesi bölümlenmemiştir ve geneldir.
Bu nedenle, bu işlem sırasında gerçekleştirilen eşzamanlı bellek ayırmalarınız varsa, bu bellek nesnesinde CMEMTHREAD beklemeleriyle karşılaşırsınız. Bu genellikle derleme veya yeniden derleme gerektiren çok sayıda sorgu gönderdiğinizde ortaya çıkar.
Bu düzeltme, Sistem Tablosu önbelleğini kullanan eşzamanlı bellek ayırmalarının çekişmeyle karşılaşmaması ve CMEMTHREAD'in beklememesi için bölümlenecek genel bellek nesnesini değiştirir.
Benzer sorun hakkında daha fazla bilgi için bkz. KB 3026082: DÜZELTME: SQL Server 2012 veya 2014'te sistem tablosu satır kümesi önbelleğindeki SOS_CACHESTORE spinlock çakışması yüksek CPU kullanımına neden oluyor.
Durum
Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.