Database Engine Tuning Advisor(DTA)

4 Ağu by NURULLAH ÇAKIR

Database Engine Tuning Advisor(DTA)

Database Engine Tuning Advisor(DTA) sorgularınızın veritabanında nasıl çalıştığını inceleyerek bize önerilerde bulunur. Kendine ait bir arayüzü vardır. SSMS üzerinden aşağıdaki şekilde açabilirsiniz.

 

 

Karşınıza çıkan connection ekranında analiz edeceğiniz instance’ı seçmelisiniz.

 

Windows’ta run kısmından tuning yazarsanız da aynı şekilde DTA’yı açabilirsiniz.

 

 

Instance üzerinde Database Engine Tuning Advisor ilk defa açılıyorsa sadece sysadmin yetkisine sahip biri açabilir. Sonraki kullanımlarda kendi veritabanında db_owner hakkına sahip biri kendi veritabanını izlemek için DTA’ı açabilir. Bunun sebebi ilk açılış esnasında msdb veritabanında bazı sistem tablolarının oluşturuyor. SQL Server single user mode’da iken DTA’yı açmaya çalışırsanız hata alırsınız.

 

DTA’da sistem yükünüzü analiz ederken;

SQL Cümleciğini,

Trace Tabloyu,

Plan Cache’deki top 1000 sorguyu analiz edebiliyorsunuz(Herhangi bir trace almadan dmw’leri kullanarak veritabanını analiz etmek için).

 

Bu makalede uzun süren sorguların profiler ile trace edildikten sonra tablo olarak kaydedilmiş halini analiz edeceğiz.

 

Uzun süren sorguları profiler ile analiz edip tablo olarak kaydetmek için “SQL Server Profiler Kullanarak Uzun Süren Sorguları Bulmak ve Tablo Olarak Kaydetmek” isimli makaleyi okumanızı tavsiye ederim.

 

 

DTA açılıp connection ekranından ilgili instance’ı seçerek bağlandıktan sonra aşağıdaki gibi Table seçeneğini seçiyoruz.

 

Daha sonra sağ taraftaki dürbün simgesi olan kutucuğa tıklayarak daha önce kaydetmiş olduğumuz ilgili trace tablosunu seçiyoruz.

 

 

Database for workload analysis ve Select databases and tables to tune kısımlarından ilgili veritabanını seçiyoruz.

 

Tuning Options kısmında ihtiyacımız olan seçenekleri seçerek Start Analysis diyoruz.

 

 

Tuning Options kısmındaki seçeneklerden hangilerinin ne anlama geldiğini aşağıda bulabilirsiniz.

 

Limit tuning time: Tune işleminin çalışacağı zamanı limitler. Sağlıklı bir tune önerisi almak istiyorsanız bu limiti kaldırın.

Yine de bir limit koymak istiyorsanız Stop at kısmından DTA’nın duracağı zamanı belirleyebilirsiniz.

 

 

Advanced Options: Aşağıda gördüğünüz Define max. Space for recommendations’ı seçerek belirtildiği gibi MB cinsinden bir değer girerseniz önerilerin maksimum boyutunu belirlemiş olursunuz. Sağlıklı bir tune önerisi almak istiyorsanız bu limiti koymayın.

 

Online Index recommendations kısmında;

 

All recommendations are offline seçeneğini seçerseniz, bütün index önerilerini offline olarak verir.

 

Generate online recommendations where possible seçeneğini seçerseniz, eğer mümkünse index önerilerini online olarak verir.

 

Generate only online recommendations seçeneğini seçerseniz bütün index önerilerini online olarak verir.(Index operasyonları her durumda online yapılamaz. Bu yüzden 2.seçeneğini seçmenizi tavsiye ederim. Yada hiçbir şekilde kesinti istemiyoruz gerekirse script hata alsın diyorsanız 3.seçeneği de seçebilirsiniz.)

 

 

Indexes and indexed views: Clustered Index, Nonclustered Index, ve Indexed View ekleme önerileri için bu seçeneği seçebilirsiniz.

 

Indexed views: Sadece Indexed View ekleme önerileri için bu seçeneği seçebilirsiniz.

 

Include filtered indexes: Filtered Index ekleme önerileri için bu seçeneği seçebilirsiniz. Bu seçeneği seçmek için Indexes and indexed views, Indexes, veya Nonclustered indexes seçeneklerinden birini seçmiş olmalısınız.

 

Indexes: Clustered Index ve Nonclustered Index ekleme önerileri için bu seçeneği seçebilirsiniz.

 

Nonclustered indexes: Sadece Nonclustered Index ekleme önerileri için bu seçeneği seçebilirsiniz.

Evaluate utilization of existing PDS only: Yeni index veya indexed view önerisi yapmadan sadece mevcut index’lerin faydalı olup olmadığını değerlendirmek için bu seçeneği seçebilirsiniz.

 

No partitioning: Partitioning tavsiyesi istemiyorsanız bu seçeneği seçebilirsiniz. Partition kavramı ile ilgili detayları “Partition Oluşturmak” isimli makalede bulabilirsiniz.

 

Full partitioning: Partitioning tavsiyesi istiyorsanız bu seçeneği seçebilirsiniz. Partition kavramı ile ilgili detayları “Partition Oluşturmak” isimli makalede bulabilirsiniz.

 

Aligned partitioning: Partition tavsiyesi verilirken index’lerin partition’a göre align edilmesini istiyorsanız bu seçeneği seçmelisiniz. Partition kavramı ile ilgili detayları “Partition Oluşturmak” isimli makalede bulabilirsiniz. Align işleminin ne olduğunu ve nasıl yapıldığını anlamak için “Partition Switch Yapılamıyor” isimli makaleme göz atmak isteyebilirsiniz.

 

Do not keep any existing PDS: Eğer mevcut index’ler, indexed view’ler ve partition’lar gereksizse, DTA’nın silme tavsiyesinde bulunmasını istiyorsanız bu seçeneği seçmelisiniz. Eğer gereksiz değilse herhangi bir tavsiyede bulunmayacaktır.

 

Keep indexes only: Eğer mevcut indexed view’ler ve partition’lar gereksizse, DTA’nın silme tavsiyesinde bulunmasını istiyorsanız bu seçeneği seçmelisiniz. Eğer gereksiz değilse herhangi bir tavsiyede bulunmayacaktır. (Bir üstteki maddden farklı olarak sadece index’leri gereksizse bile tutmak istiyorsanız)

 

Keep all existing PDS: Bütün index’ler, indexed view’ler ve partition’lar için silme önerisi istemiyorsanız bu seçeneği seçmelisiniz.

 

Keep clustered indexes only: Eğer mevcut nonclusterd index’ler, indexed view’ler ve partition’lar gereksizse, DTA’nın silme tavsiyesinde bulunmasını istiyorsanız bu seçeneği seçmelisiniz. Eğer gereksiz değilse herhangi bir tavsiyede bulunmayacaktır. (Keep indexes only’den farklı olarak  farklı olarak sadece clustered index’leri gereksizse bile tutmak istiyorsanız)

 

Keep aligned partitioning: Eğer align edilmiş partition’lar için silme önerisi istemiyorsanız ve Index’ler, Indexed View’ler, Align edilmemiş partition’lar için silme tavsiyesi istiyorsanız bu seçeneği seçmelisiniz.

 

Analiz işlemi bittiğinde aşağıdaki gibi Recommendations kısmından önerileri listeleyecektir. Benim senaryomda herhangi bir öneride bulunmadı.

 

 

SQL Server 2017 ile beraber DTA artık Query Store verisini analiz edebiliyor. Query Store ile ilgili detaylı bilgiyi “Query Store Nedir ve Nasıl Aktif Edilir” isimli makalede bulabilirsiniz.

 

Loading

Bir yanıt yazın

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