26 Şubat 2014 Çarşamba

sp_configure 'max degree of parallelism' kullanımında olası bir kriz anı!


Selam arkadaşlar,

Bir SQL Server Error Log dosyasını incelerken farkedip, sizlerle de paylaşmak istedim.

Bir SQL Server Instance'ının Max Degree of Parallelism ayarını (örneğin 1'den, yani seri çalışma şeklinden 4'e) değiştirdiğinizde SQL Server Error Log dosyasında aşağıdaki kaydı görürsünüz:

Configuration option 'max degree of parallelism' changed from 1 to 4. Run the RECONFIGURE statement to install.

Hemen bunun altında da aşağıdaki kayıtları görürsünüz:

SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Object Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'SQL Plans' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.
SQL Server has encountered 1 occurrence(s) of cachestore flush for the 'Bound Trees' cachestore (part of plan cache) due to some database maintenance or reconfigure operations.

Bu mesajlar, tüm Procedure Cache'inizin sıfırlandığı anlamına gelir. Yani hafızada bulunan tüm Execution Plan'lar artık yok, silindiler. Execution Plan oluşturma işinin de oldukça CPU maliyetli bir iş olduğunu düşünürsek, Max Degree of Parallelism gibi Procedure Cache'in temizlenmesine neden olan bir değişikliği operasyonun çok kritik olduğu bir zamanda yapmanın nasıl bir sonuç doğuracağının önceden farkında olmanız gerekir. Tabii ki buna özellikle de üretim ortamlarında dikkat etmek gerekiyor. 

Bu tarz sonuçlara neden olacak değişikliklerin yapılacağı zamanı iyi planlamalısınız. Ayrıca değişiklikten sonra gelebilecek "sistem çöktü!" veya "sistem çok ağır çalışıyor!" gibi şikayetlere de hazırlıklı olmalısınız. Çünkü yeni oluşacak bir Execution Plan, istisnai bir kayıt nedeniyle ilgili SP'nin genel çalışma beklentisine uymayacak bir şekilde derlenebilir ve bu da CPU, IO, RAM gibi kaynakların aşırı kullanımına ve yavaşlığa neden olabilir. Bu nedenle tetikte olmanızda büyük fayda var.

Kolay gelsin,
Ekrem Önsoy

1 yorum:

Adsız dedi ki...

Çok güzel bir tespit olmuş. Emeğinize sağlık.