Oracle SQL Developer SQL Tuning Advisor

Herkese Selam,

Bu yazıda sizlerle Oracle SQL Developer’ın SQL Tuning Advisor özelliğinden bahsedeceğim. Umarım farkındalık anlamında faydalı bir yazı olur.

oraclesqldeveloperOracle son bir kaç yıldır SQL Developer ürünü üzerine oldukça fazla yatırım yapmakta ve bu ürünün kullanımını yayıngınlaştırmaya çalışmakta. Bu kapsamda ürüne çok sık güncellemeler ve yeni özellikler eklenmekte. Önceleri kullanıcıların çok tercih etmediği bir development aracı olarak hayatını devam ettiren Oracle SQL Developer, son zamanlarda eklenen yeni özellikleri ve kullanışlı arayüzü ile rakip ürünlere karşı atağa geçmiş ve kullanımını yaygınlaştırmaya başlamış durumda. Yapılan yatırımların yanı sıra bu ürün için herhangi bir lisans maliyetinin olmaması, geliştiricilerin bu ürünü tercih etme oranını oldukça arttıran etkenlerden. Oracle SQL Developer ürününü daha önceden denemedeiyseniz linki takip ederek indirip kolayca bilgisayarınıza kurabilirsiniz.

Ürün ile ilgili kısa bilgiler verdikten sonra, şimdi ürünün faydalı bulduğum SQL Tuning Advisor özelliğinden bir miktar bahsedeceğim.

SQL Tuning konusu Oracle veritabanı tarafında yazılım geliştiren büyük bir çoğunluk tarafından yeterince bilinmediğini düşündüğüm konuların başında geliyor. Veri tabanı üzerinde yazılım geliştiren hemen hemen herkes rahat bir şekilde SQL ve PL/SQL kodlayabilirken, konu yazılan uygulamanın performanslı çalışmasını sağlaması noktasına geldiğinde bir miktar sorunlar yaşandığını gözlemleyebiliyoruz. SQL Tuning konusunun öğrenme maliyeti, SQL ve PL/SQL öğrenmekten daha maliyetli olduğunu düşündüğümüzde bu durum çok normal gibi gözükmekte. Türkiye’deki temel pratiğin ne olduğuna gelirsek; genellikle yazılan sorgu ve uygulamaların performansları, yazılımı geliştirme esnasında göz ardı edilebilmekte ve gün sonunda problem DBA’ler tarafından tespit edilip gerekli yönlendirmeler yapılarak çözülmekte. Bu tarz problemlerin production ortamlarda tespit edilmesi yazılımın maliyetini ve servis kalitesini negatif olarak etkilediğini varsaydığımızda, bu problemin en etkili çözümünün yazılım geliştiricilerin SQL Tuning becerilerini arttırmaları gerektiğini net bir şekilde görüyoruz. Oracle SQL Developer’ın SQL Tuning Advisor özelliği, bu bilgi ve becerilerimizin artmasına katkı sağlayabilecek ve bu bilgimizin yetersiz kaldığı noktalarda bize fikir ve yardımcı olabilecek nitelikte olduğunu söylememiz çokta yanlış olmaz.

Şimdi SQL Tuning Advisor’ın nasıl kullanıldığına kısaca göz atalım.

Öncelikle SQL Tuning Advisor’ı kullanabilmemiz için veritabanına bağlandığımız kullanıcıya, DBA veya yetkili bir kullanıcı üzerinden aşağıdaki yetkiyi vermemiz gerekiyor.

GRANT ADMINISTER SQL TUNING SET TO HR;
GRANT ADVISOR TO HR;

Bu hakları verdikten sonra şimdi HR kullanıcısı ile veri tabanına bağlanıp ilgili özelliğimizi inceleyelim.

connect

Evet HR kullanıcısı ile veritabanına bağlandık şimdi örnek bir sorgu yazaıp Tuning Advisor özelliğine bakalım.

SELECT 
   E.EMPLOYEE_ID
   D.DEPARTMENT_NAME
FROM
   DEPARTMENTS D,
   EMPLOYEES E
WHERE
   D.DEPARTMENT_ID = E.DEPARTMENT_ID;

Evet sorgumuzu yazdıktan sonra şimdi SQL Tuning Advisor’ı çalıştırabiliriz. Bu özelliği çalıştırıp sonuçları görüntüleyebilmek için iki yöntemimiz var.

1- CTRL+F12

2- Toolbox’dan SQL Tuning Advisor düğmesine basmak.

tunningadvisor
Bu işlemleri yaptıktan sonra, Tuning Advisor’a verdiğimiz SQL’in karmaşıklığına göre işlem bir miktar sürüyor ve bu işlemin sonuçları ekranın altındaki SQL Tuning Advisor Bölümünde gösteriliyor.

advisorresult

Overview bölümünde sorgunun daha iyi çalışabilmesi için ilk etapta bulunan tüm bulgular kategoriye bakılmaksızın listelenmekte. Ancak bu bulgular 4 (Statistics, SQL Profile, Indexes, Restructure SQL)kategoriye de aynı zamanda ayrılmış durumda. İstenildiği takdirde bu kategorilere ayrı ayrı tıklanarak bulgular kategorik bir şekilde de listelenebilir.

Örneğin bu örnekte tablolarda ve tablo üzerindeki indexte istatistik eksikliği bildirilmiş. Sorgu ile ilgili bize, daha doğru execution plan bulunabilmesi için bu istatistiklerin toplanması gerektiği bilgisi verilmiş.

Her bir kategori için Details sekmesine geçtiğinizde elde edilen bulgular ile ilgili önemli detay bilgilerde verilmekte. Özellike SQL Profile kısmındaki detay kısmını incelemek sorgunuzun problemini anlamak ve performans problemini çözebilme adına size oldukça güzel fikirler verebilir.

sqlprofile

Yukarıdaki örneğimizde SQL Profile detayında, sistemin size önerdiği yöntemin, sizin yönteminize göre performans kazançlarını, plan farklarını ve bir çok bilgiyi karşılaştırmalı olarak verebilmekte. Bu bağlamda buradan faydalı bilgiler elde edip sorgu problemlerimizi daha net anlayabilmemize bu özellik olanak sağlamakta.

Eğer SQL Tuning konusunda pek fazla bilgimiz yok ise ve sorgularımızı iyileştirme konusunda fikre ihtiyacımız var ise Oracle SQL Developer’ın SQL Tuning Advisor’ını çalıştırıp elde edilen önerileri test edip sorgumuzu iyileştirmek için aksiyon alabiliriz. Ancak atlanmaması gereken detay şudur ki; sistemin size çıktı olarak verdiği sonuç bir öneri niteliğindedir. Bu tarz önerilerin yüzde yüz doğru ve performanslı çalışacağını garanti etmek oldukça zordur. Bu nedenle sorgularınızın problemlerini net olarak çözebilmek için mutlaka önerilen yöntemlerin doğruluğunu test edip ona göre aksiyon almalıyız.

Not:  Test işlemini Oracle SQL Developer 4.1.3  sürümü ile gerçekleştirdim.

Advertisements

About ... from Emrah METE

Bilgisayar Mühendisi
This entry was posted in Uncategorized and tagged , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s