Provided by: manpages-tr_1.0.5.1-2_all bug

İSİM

       EXPLAIN - bir cümlenin icra planını gösterir

KULLANIM

       EXPLAIN [ ANALYZE ] [ VERBOSE ] cümle

AÇIKLAMA

       Bu  komut,  belirtilen  cümle  için PostgreSQL planlamacısının ürettiği icra planını gösterir. İcra planı
       cümle tarafından tablolara nasıl başvurulduğunu gösterir. Bu işlem, düz sıralı tarama,  indeksli  tarama,
       v.s.  şeklinde  yapılır.  Ayrıca, eğer çok sayıda tabloya başvuruluyorsa, her tablodan gerekli satırların
       birarada alınması için kullanılacak katılım algoritmasını da gösterir.

       Çıktının en önemli parçası, cümlenin icrasının  ne  kadar  süreceği  ile  ilgili  planlamacının  tahminde
       bulunmasıyla saptanan, tahmini cümle icra maliyetidir (disk sayfası cinsinden ölçülür). Aslında, iki sayı
       gösterilir:  başlangıçtan  ilk  satır  döndürülene  kadar geçen süre ve tüm satırlar döndürülünceye kadar
       geçecek toplam süre. Çoğu sorgu için, toplam süre sorun değildir, ama EXISTS'li bir alt sorgunun  varlığı
       gibi  durumlarda  planlamacı en küçük  toplam süreye değil en küçük başlangıç zamanına bakacaktır (icracı
       bir satır döndüğünde duracaktır). Ancak, döndürülecek satır  sayısını  LIMIT  deyimi  ile  sınırlarsanız,
       planlamacı en ucuz planlama için bir tahminde bulunabilecektir.

       ANALYZE seçeneği cümlenin planlamasının yapılmasından başka cümlenin çalıştırılmasını da sağlar. Harcanan
       toplam  süre  her  planlama  düğümü için ayrı ayrı gösterilir (milisaniye cinsinden). Ayrıca, dönen satır
       sayısı da çıktıya eklenir. Bu, planlamacının tahminlerinin tutarlı olup  olmadığını  görme  açısından  da
       yararlıdır.

       Önemli:
              ANALYZE  kullanıldığında  cümlenin  çalıştırılacağını  unutmayın.  EXPLAIN'de kullanıldığında, bir
              SELECT cümlesinin döndüreceği çıktı iptal edileceğinden, cümlenin bazı yan etkileri varsa,  onları
              bilemeyeceksiniz.  INSERT,  UPDATE,      DELETE  veya  EXECUTE  cümleleri üzerinde EXPLAIN ANALYZE
              kullanmak   ve   komutun   etkilerinin   verinizi   etkilememesini   isterseniz,   şu    yaklaşımı
              kullanabilirsiniz:

                  BEGIN;
                  EXPLAIN ANALYZE ...;
                  ROLLBACK;

PARAMETRELER

       ANALYZE
              Cümleyi çalıştırır ve gerçek çalışma sürelerini gösterir.

       VERBOSE
              Planlama  ağacının  bir  özetini  değil dahili gösteriminin tamamını gösterir. Aslında, bu seçenek
              sadece hata  ayıklama  amacıyla  yararlıdır.  VERBOSE  çıktısı  explain_pretty_print  yapılandırma
              değişkeninin değerine bağlı olarak ya cicili bicilidir ya da değildir.

       cümle  İcra planını görmek istediğiniz bir SELECT, INSERT, UPDATE, DELETE, EXECUTE veya DECLARE cümlesi.

EK BİLGİ

       Eniyileyici kullanımı hakkında
       http://www.postgresql.org/docs/8.0/static/performance-tips.html#USING-EXPLAIN  adresinde daha fazla bilgi
       bulabilirsiniz.

       PostgreSQL'in sorguları eniyilerken kabul edilebilir kararlar verebilmesi için, ANALYZE  komutunun  tablo
       içindeki verilerin istatistiksel dağılımını kaydetmiş olması gerekir. Bu yapılmazsa (ya da tablo içindeki
       verilerin  istatistiksel dağılımı son ANALYZE çağrısından sonra çok fazla değişikliğe uğramışsa), tahmini
       maliyetler sorgunun gerçek  özellikleriyle  uyumlu  olmayacağı  gibi  planlamacının  ürkütücü  bir  sorgu
       planlaması seçimi yapmasına sebep olabilir.

       PostgreSQL  7.3 öncesi, sorgu planı bir NOTICE çıktısı biçimindeydi. Şimdi, bir sorgunun sonucu gibi (tek
       sütunluk bir tablo gösterimi olarak) çıktılanmaktadır.

ÖRNEKLER

       integer türünde tek bir sütunu olan 10000 satırlık bir tabloya uygulanan basit bir sorgunun  planlamasını
       görmek için:

       EXPLAIN SELECT * FROM foo;

                              QUERY PLAN
       ---------------------------------------------------------
        Seq Scan on foo  (cost=0.00..155.00 rows=10000 width=4)
       (1 row)

       Eğer  bir  indeks  varsa  ve  WHERE  ile  indekslenen  bir  sorgu  kullanırsak,  EXPLAIN  farklı bir plan
       gösterebilir:

       EXPLAIN SELECT * FROM foo WHERE i = 4;

                                QUERY PLAN
       --------------------------------------------------------------
        Index Scan using fi on foo  (cost=0.00..5.98 rows=1 width=4)
          Index Cond: (i = 4)
       (2 rows)

       Bir ortak değer işlevi kullanılan bir sorgunun sorgu planı:

       EXPLAIN SELECT sum(i) FROM foo WHERE i < 10;

                                    QUERY PLAN
       ---------------------------------------------------------------------
        Aggregate  (cost=23.93..23.93 rows=1 width=4)
          ->  Index Scan using fi on foo  (cost=0.00..23.92 rows=6 width=4)
                Index Cond: (i < 10)
       (3 rows)

       Bir taslak sorgu hazırlarken bunun icra planını görmek için, EXPLAIN EXECUTE kullanımı örneği:

       PREPARE query(int, int) AS SELECT sum(bar) FROM test
           WHERE id > $1 AND id < $2
           GROUP BY foo;

       EXPLAIN ANALYZE EXECUTE query(100, 200);

                       QUERY PLAN
       ----------------------------------------------------------
       HashAggregate  (cost=39.53..39.53 rows=1 width=8)
                       (actual time=0.661..0.672 rows=7 loops=1)
         ->  Index Scan using test_pkey on test
                       (cost=0.00..32.97 rows=1311 width=8)
                       (actual time=0.050..0.395 rows=99 loops=1)
               Index Cond: ((id > $1) AND (id < $2))
       Total runtime: 0.851 ms
       (4 rows)

       Şüphesiz burada gösterilen değerler işlenen tabloların gerçek içeriğine bağlıdır. Ayrıca, bu değerler  ve
       hatta  seçilen  sorgu  stratejisi, planlamacının sürekli geliştirilmesi sebebiyle, PostgreSQL dağıtımları
       arasında bile değişiklik gösterebilir. Buna ek olarak, ANALYZE komutu veri istatistiklerini tahmin  etmek
       için  rasgele  örnekleme yapar; bundan dolayı, tablo verisinde bir değişiklik olmamış bile olsa, taze bir
       ANALYZE çağrısından sonra maliyet tahminleri değişiklik gösterebilir.

UYUMLULUK

       SQL standardında EXPLAIN diye bir deyim yoktur.

İLGİLİ BELGELER

       ANALYZE [analyze(7)].

ÇEVİREN

       Nilgün Belma Bugüner <nilgun (at) belgeler·gen·tr>, Nisan 2005

PostgreSQL                                                                                            EXPLAIN(7)