Automatic Tuning Nedir

22 Kas by NURULLAH ÇAKIR

Automatic Tuning Nedir

Automatic Tuning SQL Server 2017 ile birlikte hayatımıza girdi.

 

Automatic Tuning, olası performans problemlemlerini belirleyen, bu problemlerin çözümü için tavsiyelerde bulunan ya da otomatik olarak bu problemleri çözen bir veritabanı özelliğidir.

 

Çok heyecan verici değilmi? Acaba SQL Server bütün performans işlemlerini artık bu özellik ile kendi kendine mi yapacak diye düşünüyor olabilirsiniz. Sizi daha fazla bekletmeden konuya geleyim. İki tip Automatic Tuning özelliği var.

 

Automatic Plan Correction: (SQL Server 2017 ve Azure SQL Database için kullanılabilir) Problemli execution plan’ları belirleyerek, bu execution plan kaynaklı performans problemlerini çözer. Bazı durumlarda SQL Server gelen sorgular için yeni execution plan üretir ve bu plan eskinesine göre daha kötü bir performansla çalışabilir. Böyle durumlarda automatic plan correction aktif edilmişse yeni üretilen kötü performanslı query plan yerine, iyi çalıştığı bilinen en son execution plan kullanılır. Veritabanı bazında aşağıdaki şekilde aktif edilebilir.

ALTER DATABASE veritabani_ismi SET AUTOMATIC_TUNING ( FORCE_LAST_GOOD_PLAN = ON );

 

 

QueryStore ile manual olarak’ta bir execution plan’ı set edebilirsiniz. Query Store hakkında detaylı bilgiyi “Query Store Nedir ve Nasıl Aktif Edilir” isimli makalede bulabilirsiniz.

 

Automatic Index Management: (Sadece Azure SQL Database için kullanılabilir) Eklenmesi ve kaldırılması gereken indexler’i belirler.

 

Azure üzerindeki veritabanlarında eksik index ihtiyacını belirler ve isterseniz eksik index’leri otomatik olarak oluşturur, kullanılmayan index’leri de siler.

 

Aşağıdaki sorgu ile veritabanı bazında automatic tuning’i azure’un default ayarlarıyla aktif edebilirsiniz.

 

ALTER DATABASE veritabani_ismi SET AUTOMATIC_TUNING = AUTO

 

 

Aşağıdaki script yardımıyla da automatic tuning’i spesifik ayarlarla aktif edebilirsiniz.

ALTER DATABASE current SET AUTOMATIC_TUNING (FORCE_LAST_GOOD_PLAN = ON,
CREATE_INDEX = DEFAULT, DROP_INDEX = OFF)

 

 

Çoğu kişinin aklına geldiği gibi benim aklıma da Microsoft’un fazladan index ekleyebileceği geldi. Yani normalde sorgulardaki execution plan’a baktığımızda eksik index olarak 20 tane kolon’u include alana koymamızı tavsiye ettiğini biliyoruz. Bu gibi durumlar performansı iyileştirmek yerine genelde kötüleştiriyor. Buy üzden iyi bir veritabanı yöneticisi genel olarak microsoft tarafından tavsiye edilen her index’i oluşturmaz.

 

Microsoft bunu da düşünmüş. Eksik olduğunu tespit ettiği index’i oluşturduktan sonra sistemi izlemeye devam ediyor ve gerekirse oluşturduğu index’i siliyor. Ya da kullanılmadığını düşündüğü index’i sildikten sonra eğer performans kötü etkileniyorsa index’i yeniden oluşturuyor.

 

Index’ler hakkında detaylı bilgi almak için “SQL Server’da Index Kavramı ve Performansa Etkisi” isimli makaleyi okumanızı tavsiye ederim.

Loading

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir