[Makale]Query Analyzer

  • Konbuyu başlatan Konbuyu başlatan DeTaFiLL
  • Başlangıç tarihi Başlangıç tarihi

DeTaFiLL

<marquee><b><font color="#0066FF">PhotoShop Expert
Katılım
17 Haz 2008
Mesajlar
378
Reaction score
6
Puanları
18
Yaş
38
Konum
Istanbul/Kartal
Merhaba Değerli Ko-Cuce Severleri..
Öncelikle Kendi Adıma Yazılmamıştır Alıntıdır Belirtmek İstiyorum..
İyi Okumalar Çok Yararlı Bi Makale..

QUERY ANALYZER
Bu makalemizde SQL Server'ın araçlarında biri olan Query Analyzer'ı inceleyeceğiz.
Query Analyzer öncelikli olarak bir programlama aracıdır. Sorguları ve diğer Transact-SQL ifadelerini oluşturmak ve işletmek Enterprise Manager içinde mümkün olsa da, Enterprise Manager daha çok veritabanı yönetimi için tasarlanmış bir araçtır. Başlat/Programlar/Microsoft SQL Server/Query Analyzer yolunu takip ederek Query Analyzer'ı açalım. Query Analyzer'ı Başlat menüsünden açtığımız gibi Enterprise Manager içinde Araçlar(Tools) menüsünden seçerekte başlatabiliriz. Bu durumda Query Analyzer gerekli bağlantı bilgisini Enterprise Manager'dan alacaktır. Bunlarla uğraşamam diyorsanız "Windows Tuşu + R" tıklayıp, "Çalıştır" penceresini aktifleştirerek "isqlw" yazıp Enter'a basın.
Query Analyzer'ı, Başlat menüsünden yada isqlw komutu ile açtığımızda, mevcut sunuculardan bağlanmak istediğimiz sunucuyu ve güvenlik kipini seçmemizi sağlayan Connect to SQL Server iletişim kutusu ile karşılaşırız. Bir ağa bağlı olmadığımdan ve bilgisayarımda tek sunucu kopyası bulunduğundan sunucu listemde sadece " . " (nokta) imi bulunmaktadır. " . " (nokta) imi bilgisayarımdaki sunucuyu göstermektedir. Yani localhost anlamındadır.

1.query_mozen.jpg


Query Analyzer açıldığında iki pencere görünür: Nesne Listeleyicisi(Object Browser) ve Sorgu(Query) penceresi.

2.query_mozen.jpg


2.Şekil: Query Analyzer
Nesne Listeleyicisinin, Nesneler(Objects) sekmesi Enterprise Manager'ın konsol ağacına benzeyen hiyeraşik bir görünümdedir. Veritabanları ve diğer nesneler hiyerarşik bir şekilde listelenmişlerdir. Ancak konsol ağacından farklı olarak sadece veritabanı nesneleri listelenir. Logins, DTS gibi öğeler görüntülenmez. Ayrıca tablolar sistem tabloları ve kullanıcı tabloları olmak üzere iki klasöre ayrılmıştır. Tabloların; sütunları, dizinleri, kısıtlamaları, bağımlılıkları ve tetikleyicileri tablonun isminin altında yine hiyeraşik bir şekilde listelenir. Nesne Listeleyicisinin, Ortak Nesneler (Common Objects) klasörü bir dizi ortak Transact-SQL işlevlerini içerir. Nesne Listeleyicisinde, herhangi bir tablonun üzerine gelip, farenin sağ tuşu ile tıklayarak açılan menüde Aç(Open) komutunu seçersek, tablo, Query Designer'da açtığımız gibi bütün satırları ile açılır. Nesne Listeleyicisinin Şablonlar(Templates) sekmesi , programlama şablonlarıın hiyeraşik bir görünümünü içerir.
Sorgu penceresi, Query Designer'ın, SQL penceresine benzemektedir. Ancak SQL penceresinden daha güçlü ve daha esnektir. SQL penceresi Transact SQL ifadelerinin bir bölümünü işlerken, sorgu penceresinde geçerli herhangi bir Transact SQL ifadesini işleyebiliriz. Transact SQL ifadelerini işlemek için Query Analyzer araç çubuğundan işlem yapmak istediğimiz veritabanını seçelim. Sorgu penceresinde çalışırken "use veritabanı_ismi" ifadesi ile de işlem yapmak istediğimiz veritabanını seçebiliriz.Çalışmak için bir veritabanı seçip bir sorgu yazalım.
USE mustafa
SELECT*FROM ogrenci
Sorgumuzu yazdıktan sonra araç çubuğundan Sorguyu Yürüt(Execute Query) düğmesine tıklayarak yada kısayol olarak F5 tuşuna basarak sorgumuzu çalıştıralım. Sorgu penceresinin alt tarafında iki sekme görünür. Izgara(Grid) ve Mesajlar(Messages). Grid sekmesinde sorgunun sonuçları görüntülenir. Mesajlar sekmesini tıkladığımızda, sorgudan kaç satırın etkilendiği bilgisi görüntülenir, yada sorguda hata olduğunda hata mesajını görüntüler. Sorgu sonuçlarını ayrı bir sekmede görüntülemek istiyorsanız, Araçlar(Tools) menüsünden Özellikler(Options) seçeneğini tıklayın. Açılan iletişim kutusunda Editör sekmesini tıklayın ve Tabbed Mode seçeneğini seçin. Sorgu penceresinin alt tarafına Grid ve Messages sekmelerinin yanına Editör sekmesi eklenir. Böylece kod yazdığımız pencere ve sonuç penceresi farklı sekmelerde görüntülenir.
Query Analyzer'ın sunduğu kolaylıklardan biride tablo, görünüm, saklı yordam gibi mevcut nesneler için arama imkan sağlamasıdır. Araç çubuğundan Nesne Ara(Object Search) düğmesini yada kısayol olarak F4 tuşuna basalım. Nesne arama iletişim kutusu karşımıza çıkacaktır.

3.query_mozen.jpg


3.Şekil: Object Search

Nesne ismi (Object Name) bölümüne bulmak istediğimiz nesnenin adını yazıyoruz. Veritabanı (Database) bölümünden aramanın yapılacağı veritabanını seçiyoruz. Hit Limit bölümüne görüntülenecek sonuç sayısını giriyoruz. Son olarak aradığımız nesnenin türü neyse (Sistem Tablosu, Kullanıcı Tablosu, Görünüm vs) seçip "Bul(Find Now)" düğmesini tıklayalım. Arama yaptığımız veritabanında, girdiğimiz isimde, seçtiğimiz nesneden kaç tane varsa listelenecektir.
Sorgu penceresi sürükle bırak özelliğini desteklemektedir. Nesne listeleyicisinden herhangi bir nesneyi tutup sürükleyerek sorgu penceresine bıraktığımızda nesnenin adı sorgu penceresine yapıştırılır. Ancak parametreleri yapıştırılmaz.Bir nesneyi parametreleri ile sorgu penceresinde görmek isterseniz, yani seçtiğimiz nesneyi oluşturan Transact-SQL ifadelerini görmek isterseniz, nesnenin, örneğin bir tablonun üzerine gelip farenin sağ tuşunu tıklayın. Açılan menüden Script Object to New Windows As bölümüne gelip, Create komutunu tıklayalım. Nesneyi oluşturan Transact SQL ifadeleri ayrı bir sorgu penceresinde görüntülenir.
Editör, Grid ve Messages görüntülemelerine ek olarak SQL Server Query Analyzer'ın Sorgu penceresi üç ek görüntülemeye daha sahiptir. SQL Server bir sorguyu çalıştırırken yerine getirdiği görevlerin grafiksel gösterimini görüntüleyen Execution Plan, sorgunun sunucu tarafında çalışması hakkındaki ayrıntılı bilgileri gösteren Server Trace, sorgunun istemci tarafında çalışması hakkındaki ayrıntılı bilgileri gösteren Client Statistics. Query Analyzer'ın Sorgu menüsünden bu görüntülemeleri açmak için gerekli bölümleri tıklayalım

4.query_mozen.jpg


4.Şekil: Sorgu menüsünde ek görüntülemeleri aktifleştiren bölümler

Tıkladınız. Birşey değişmedi mi diyorsunuz? Haklısınız, çünkü henüz çalıştırılmış bir sorgumuz yok. Sorgu penceresine bir sorgu yazıp çalıştıralım.
USE mustafa
SELECT*FROM ogrenci
INNERJOIN ogrenci1 ON ogrenci.adi=ogrenci1.adi
Sorgunuzu çalıştırdığınızda, sorgu penceresinin alt tarafına üç yeni sekme eklenecektir.

5.query_mozen.jpg


5.Şekil: Eklenen yeni sekmeler
Yürütme planı(Execution Plan) sekmesini tıklayalım. SQL Server çalıştırılırken yaptığı işlemlerin grafiksel görüntüsü görüntülenecektir. Yürütme planı, sorgunun yürütüleceği işlemleri temsil etmek için çok sayıda simge kullanır. Herhangi bir simgenin üzerine fare işaretçisi ile geldiğimizde o nesneye ait özellikler araç ipucu olarak listelenecektir. Aşağıda da görüldüğü gibi yürütme planında işlemler sağdan sola doğru yürütülür. Yine aşağıda görüldüğü gibi tablolarımızın birinde %33'lük bir iş yükü bulunmaktadır. Veritabanımızı daha hızlı hale getirmek için bu iş yükünü en aza indirmek yani çalışan sorguyu iyileştirmek gerekir.(Index Tuning Wizard iyileştirme konusunda bize önerilerde bulunur.) Yürütme planı, çalışan sorgunun grafiksel görünümünü görüntülemenin yanında sorguyu iyileştirmek için bir düzenek sağlar. Sorguyu en iyi hale getirmek için dizinler ekleyebilir veya sorgunun kullandığı istatistikleri güncelleştirebiliriz. Sorgumuzdaki bu iş yükünü en aza indirmek için ilgili tabloya bir dizin ekleyelim.

6.query_mozen.jpg


6.Şekil: Yürütme Planı (Execution Plan)
Yürütme planı sekmesine gelip, %33 maliyeti olan tabloya farenin sağ tuşu ile tıklayıp, açılan menüden Manage Indexes bölümünü tıklayalım. Açılan pencerede, yeni dizin eklemek için Yeni(New) düğmesini tıklayalım. Açılan pencerede, dizinimize bir isim verip, sorguda kullandığımız sütunu (benim örneğimde "adı" sütunu) dizin olarak seçelim ve Tamam(OK) düğmesini tıklayalım. Manage Indexes penceresinide Kapat(Close) düğmesini tıklayarak kapatalım. Şimdi sorgumuzu tekrar çalıştıralım. Sonuçlar, Grid sekmesinde listelenir. Yürütme planı sekmesini tıklayalım. Görüntü bu defa aşağıdaki gibidir.

7.query_mozen.jpg


7.Şekil: İyileştirme sonrası yürütme planı
İş yükü olan tablomuza "deneme" adında bir dizin ekleyerek iyileştirme yaptık. Görüldüğü gibi iş yükü sıfırlanmıştır. Sorgumuzu çalışabilecek en iyi hale getirmiş olduk.
Sunucu İzleme(Server Trace) penceresi, sorgu çalıştırıldığında sunucu tarafından çalıştırılan komutları gösterir. Sunucu izlenimleri için SQL Profiler aracıda kullanılabilir.(SQL Profiler adlı makale için tıklayınız.) .
İstemci İstatistikleri (Client Statistics) penceresi sorgunun istemci tarafındaki etkisini görüntüler. Verilen istatistikler üç bölüme ayrılmıştır. Çalıştırılan Transact SQL ifadesi ve etkilenen satır sayısı hakkında bilgi veren Uygulama Profili İstatistikleri(Application Profile Statistics), oluşturulan ağ trafiği hakkında bilgi veren Ağ İstatistikleri(Network Statistics) ve istemci yada sunucu üzerinde gecikme olup olmadığını belirlemeye yardımcı olan Zaman İstatistikleri(Time Statistics). Ağ istatistikleri bir ağa bağlı olmadan yerel sunucuda çalışsakta görüntülenecektir.
Dİzİn Ayarlama SİhİrbazI (Index Tuning Wizard)
Sorgularımızı en hızlı hale getirmek için iyileştirme yaptığımızı söylemiştik. Peki ama sorgumuzu en iyi hale getirmek için hangi sütunu dizin olarak kullanacağımızı nasıl bileceğiz? Dizin Ayarlama Sihirbazı(Index Tuning Wizard), veritabanımızı çözümleyerek başarıyı en iyi hale getirmek için bize öneriler sunar. Query Analyzer Sorgu(Query) menüsünden Dizin Ayarlama Sihirbazı(Index Tuning Wizard) seçeneğini seçelim. Açılan pencerede İleri düğmesini tıklayalım. Çözümlenecek veritabanını seçmemizi isteyen ikinci bir pencere açılır. İki seçenek vardır. Varolan Dizinleri Koru(Keep All Existing Indexes) seçeneği, iş yükü için yardımcı olmayan dizinlerle ilgili önerilerde bulunmasını sağlar. Bu seçeneği dikkatli kullanmak gerekir. Çünkü, bir dizin çözümlenen iş yükü içinde olmasa da, çözümleme dışında diğer bazı sorgular için başarım faydaları sağlayabilir. Tuning Mode seçeneği ile yapılacak çözümlemenin ayar tipi seçilir. Bu pencereden ayar tipi olarak Eksiksiz(Thorough) seçeneğini seçelim ve İleri düğmesini tıklayalım. Çözümlenecek iş yükünü isteyen bir pencere açılır.Query Analyzer'da bir iş yükü belirleyeceğimizden var olan seçeneği kabul edip ileri düğmesine tıklayalım. Dizin ayarlaması yapılacak olan tabloyu seçmemizi isteyen bir pencere açılır. İş yükü olan tabloyu seçelim. Hedeflenen Satır(Projected Rows) bölümüne 1000 değerini girelim. Küçük tablolar için dizin oluşturmanın bir kazancı yoktur. Bu yüzden hedeflenen satır bölümünü düşük tutarsanız Index Tuning Wizard bir öneride bulunmayacaktır.(Denedim, hedeflenen satır sayısı 50'den küçük olduğunda bir öneri sunmuyor.) Hedeflenen satır sayımızıda girdik. Karşımızda, Index Tuning Wizard'ın önerisi.

8.query_mozen.jpg


8.Şekil: Index Tuning Wizard 'ın önerisi
İleri düğmesini tıklayalım. Yapılan ayarlamanın hemen mi uygulanacağı yoksa ileride belirlenen bir zamanda mı uygulanacağı yada ileride uygulamak için bir SQL komut dosyasına mı yazmak istediğimizi soran bir pencere ile karşılaşırız. Biz hemen uygulamak için Değişiklikleri Uygula (Apply Changes) seçeneğini seçip ileri düğmesini tıklayalım. Son pencerede, Son(Finish) düğmesini tıklayarak ayar işlemini tamamlayalım. Bir önceki pencerede, hemen uygulamak yerine SQL komut dosyasına yazmayı seçseydik, karşımıza, komut dosyasını kaydedeceğimiz yeri seçmemizi isteyen bir iletişim kutusu çıkar. Komut dosyamıza bir isim verip kaydedelim. SQL script kodları bir not defterine kaydedilir. Sonra, dizin ayarlamasını uygulamak istediğimizde, komutların yazılı olduğu dosyayı açıp bütün kodları seçerek kopyalayalım. Query Analyzer'da yeni bir Sorgu penceresi açalım ve buraya yapıştıralım. Araç çubuğundan Sorguyu Yürüt(Execute Query) düğmesine tıklayalım.(Kısayol F5). Ayarlamamızın başarıyla yapıldığını bildiren bir mesaj belirir. Şimdi yeni bir sorgu penceresi açıp. Aynı sorgumuzu tekrar yazıp çalıştıralım. Sorgumuzu çalıştırdığımızda 7.Şekil'deki sonucu, yani sorgunun en iyi halini elde etmiş olacağız. Demek ki dizin ayarlama sihirbazımız, "adı" sütununu dizin yapmamızı söyleyerek bize doğruyu söylemiş
SQL KOMUT DOSYASI
"SQL komut dosyası" terimini kullandık. SQL komut dosyası nedir? SQL komut dosyası, bir dosyada depolanmış Transact SQL ifadeleri kümesidir. Komut dosyaları genellikle, veritabanı nesnelerini oluşturmak için kullanılan komutların, kalıcı kayıtlarını tutmak için kullanılır. SQL Server, Pubs ve Northwind örnek veritabanlarını oluşturmak için komut dosyalarını kullanır. Komut dosyaları, veritabanı yerine metin dosyaları içinde depolandığı için, nesneleri farklı sunucularda yeniden oluşturmak içinde kullanılabilir. Komut dosyalarının kullanımı herhangi bir veritabanı nesnesini oluşturmakla sınırlı değildir. Herhangi bir Transact SQL ifadesi komut dosyası içinde yer alabilir. Bizde kendi komut dosyalarımızı yazabiliriz. Komut dosyası içindeki SQL ifadeleri toplu işler olarak gruplanır. Komut dosyası bir yada daha çok toplu iş içerebilir. Her toplu iş birbirinden GO ifadesi ile ayrılır. Bir komut dosyası GO komutunu içermiyorsa tek bir toplu iş olarak çalıştırılır. Şimdi biraz pratik yapalım ve basit bir komut dosyası yazalım. Query Analyzer Sorgu(Query) penceresinde, Editör sekmesini tıklayalım. (SQL ifadelerini yazdığımız bölüm) Aşağıdaki gibi bir sorgu yazalım. (Veritabanı, tablo ve sütun isimlerini kendi sunucunuzdaki değerlere göre yazın.) Görüldüğü gibi önce bir sorgu yazdık. Sonra GO komutunu kullandık ve ikinci bir sorgu yazdık. İki yada daha çok toplu işin birlikte çalışmasını buna benzer ifadelerle sağlamış oluyoruz. Araç çubuğundan sorguyu yürüt düğmesini tıklayalım. İki sorgununda sonuçları görüntülenir. Kod yazdığımız editör sekmesini seçelim. Araç çubuğundan Sorguyu Kaydet(Save Query) düğmesini tıklayalım. Editör sekmesini tıkladığınızdan emin olun. Aksi takdirde, sorgunun kendisi değil sonuçları kaydedilir. Açılan iletişim kutusunda komut dosyamıza bir isim vererek kaydedelim.
USE mustafa
SELECT ogrenci.adi,ogrenci1.adi FROM ogrenci
INNERJOIN ogrenci1 ON ogrenci.adi=ogrenci1.adi
GO
SELECT*FROM ogrenci
Şimdi kaydettiğimiz konuma gidip komut dosyamızı açalım. Açılan metin dosyasında, yazdığınız komutları göreceksiniz. Oluşturduğumuz bu komut dosyasını Query Analyzer'da açalım. Query Analyzer'da araç çubuğundan Yeni Sorgu(New Query) düğmesini tıklayarak yada "Ctrl + N " kısa yol tuşu ile yeni bir sorgu penceresi açın. Sonra yine araç çubuğundan Load SQL Script düğmesini tıklayın ve komut dosyanızı kaydettiğiniz konumdan seçerek Aç düğmesini tıklayın. Komut dosyasında yazdığımız komutlar, Editör sekmesinde görüntülenir. İsterseniz komut dosyasını açıp, kodları kopyalayıp sorgu penceresinin editör bölümüne de yapıştırabilirsiniz. Araç çubuğundan sorguyu yürüt düğmesini tıklayalım. Komut dosyasında yazdığımız sorguların sonuçları görüntülenecektir.
Bu şekil Query Analyzer'ı derinlemesi inceledik ve bir makalenin daha sonuna geldik. Sonraki makalede görüşmek üzere.
 
Cevap: [Makale]Query Analyzer

Bunu okumuştum daha önceden. Teşekkürler yine de :)
 
Cevap: [Makale]Query Analyzer

Rica Ederim Yeni Konuyu Açtım O Bizim İçin Daha ÖnemLi..
 
Geri
Üst Alt