24 Ekim 2014 Cuma

Olmayan Core ile sahte paralelizm

Merhaba!

Bugün yine Itzik'in bir yazısını okurken yeni bir şey öğrendim, sizlerle de paylaşmak istedim.

Örneğin SQL Server veritabanı uygulamalarınız için bir test ortamı oluşturdunuz; fakat test sunucunuzun donanımı üretim sunucunuz kadar güçlü değil, ki genelde de böyledir. Haklı olarak test ortamında çalıştırdığınız sorgular için üretilen Execution Plan'lar ile üretim ortamındakiler aynı olsun istiyorsunuz. 

Bunun için test ortamındaki SQL Server Instance'ını -P parametresiyle başlatabiliyoruz, bunu zaten SQL Server ile haşır neşir olan çoğumuz bilir. Bilmeyenler için de şöyle izah edeyim, SQL Server Configuration Manager'ı açın, ilgili SQL Server Database Engine servisinizin özelliklerine gidin ve Startup Parameters'a -Pn parametresini ekleyin, n burada CPU Core sayısı olarak duruyor. Yani örneğin -P8 eklemiş olursanız, fiziksel makineniz 4 Core'lu da olsa SQL Server 8 Core varmış gibi üretecek Execution Plan'ları. Tabii ki bu değişikliğin etkinleşebilmesi için SQL Server Database Engine servisinizi yeniden başlatmanız gerekecek.

Bilmediğim ve çoğu kişinin de bilmediği yöntem ise aşağıdaki yöntem. Bu yöntem Undocumented bir yöntem, yani Microsoft tarafından dokümantasyona eklenmemiş, yani resmen desteklenmiyor. Bir şekilde, ya bir Microsoft çalışanı tarafından resmi olmayan bir şekilde bir yerde yazıldı çizildi de biliniyor ya da bir yerdeki CSS'ten biri veya bir PFE bir müşteride kullandı da öğrenildi.

Peki nedir bu yöntem? Nasıl kullanılır? İnternette bu yöntem hakkında çok bilgi yok şu anda. Komut ise aşağıdaki gibi:

DBCC OPTIMIZER_WHATIF(1,8);

Eğer bu komutu çalıştırırsanız, hiç yukarıdaki -P parametresinde olduğu gibi SQL Server servisini yeniden başlatmanız falan gerekmeyecek. Bu komutnu etkisi, sadece içinde bulunduğunuz oturum için geçerli olacak.

Oturumunuzu yine normal seyrine çevirmek isterseniz de bu komutu aşağıdaki parametrelerle çalıştırabilirsiniz:

DBCC OPTIMIZER_WHATIF(1,0);

Ekrem Önsoy

Hiç yorum yok: