KB3005300 - DÜZELTME: SQL Server 2012 veya SQL Server 2014'te uzamsal veri türünü ve ilişkili yöntemleri kullandığınızda yüksek CPU tüketimi

Uygulandığı Öğe
SQL Server 2014 Enterprise - duplicate (do not use) SQL Server 2014 Developer - duplicate (do not use) SQL Server 2014 Standard - duplicate (do not use) SQL Server 2012 Developer SQL Server 2012 Enterprise SQL Server 2012 Standard

Belirtiler

Microsoft SQL Server 2012 veya Microsoft SQL Sever 2014'te uzamsal veri türünü ve ilişkili yöntemleri kullandığınızda, SQL Server İşletim Sistemi (SQLOS) zamanlayıcısının kuantum hedefleri SQL Server CLR barındırma katmanı tarafından korunur. Bu koruma önleyici SQLOS anahtarları içerir, CPU tüketimini artırabilir. Önleyici anahtarın nedeni SQLOS zamanlayıcısını korumaktır. SQL Server CLR tabanlı bir uygulamaya yapılan çağrı, SQLOS zamanlayıcısına yol vermeden veya davranışı ve eşzamanlılık desenlerini değiştirmeden belirtilmemiş zaman alabilir. Bu nedenle, uzamsal veri türü her çağrı sırasında önleyici olarak geçiş yapacak şekilde tasarlanmıştır.

Not: Uzamsal veri türü SQL Server CLR'yi temel alır, çeşitli .NET bellek tüketimi ve iş parçacığı değiştirme davranışı düzeyleriyle karşılaşabilir.

Neden

Uzamsal veri türü yöntemlerinin yürütülmesi genellikle milisaniyenin altındadır ve tam SQL işletim sistemi zamanlayıcısı ve önleyici koruma gerektirmeyebilir. Önleyici moda geçme ve bu moddan çıkma ek yükü, uzamsal yöntemin kendisinin yürütülmesinden çok daha büyük olabilir.

Çözüm

Bu düzeltme, SQLOS barındırma katmanına uzamsal veri türünün önleyici korumalardan kaçınması gerektiğini belirtmek için izleme bayrağı 6531'i sunar. Bu, CPU tüketimini azaltabilir ve uzamsal etkinlikler için genel performansı iyileştirebilir. Bu izleme bayrağını yalnızca tek tek, uzamsal yöntem çağrıları (satır ve sütun başına) ~4 ms'den az sürerse kullanın. Önleyici koruma olmadan yapılan daha uzun çağrılar, zamanlayıcı eşzamanlılık sorunlarına ve hata günlüğüne kaydedilen SQLCLR ceza iletilerine yol açabilir.

Sorun ilk olarak aşağıdaki toplu SQL Server güncelleştirmesinde düzeltilmiştir.

SQL Server 2012 SP2 için Toplu Güncelleştirme 4 /en-us/help/3007556

SQL Server 2014 için Toplu Güncelleştirme 5 /en-us/help/3011055

SQL Server 2012 SP1 için Toplu Güncelleştirme 13 /en-us/help/3002044

SQL Server toplu güncelleştirmeleri hakkında

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ştirmelere göz atın:

      

Durum

Microsoft bunun, "Şunlar için geçerlidir" bölümünde listelenen Microsoft ürünlerinde sorun olduğunu doğrulamıştır.