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

ISIM

       EXPLAIN - bir cumlenin icra planini gosterir

KULLANIM

       EXPLAIN [ ANALYZE ] [ VERBOSE ] c"umle

A,CIKLAMA

       Bu  komut,  belirtilen  cumle  icin PostgreSQL planlamacisinin urettigi
       icra planini gosterir. Icra  plani  cumle  tarafindan  tablolara  nasil
       basvuruldugunu  gosterir. Bu islem, duz sirali tarama, indeksli tarama,
       v.s. seklinde yapilir. Ayrica, eger cok sayida tabloya  basvuruluyorsa,
       her  tablodan  gerekli  satirlarin  birarada alinmasi icin kullanilacak
       katilim algoritmasini da gosterir.

       Ciktinin en onemli parcasi, cumlenin icrasinin ne  kadar  surecegi  ile
       ilgili planlamacinin tahminde bulunmasiyla saptanan, tahmini cumle icra
       maliyetidir  (disk  sayfasi  cinsinden  olculur).  Aslinda,  iki   sayi
       gosterilir:  baslangictan ilk satir dondurulene kadar gecen sure ve tum
       satirlar dondurulunceye kadar gececek toplam  sure.  Cogu  sorgu  icin,
       toplam sure sorun degildir, ama EXISTS'li bir alt sorgunun varligi gibi
       durumlarda planlamaci en kucuk  toplam sureye degil en kucuk  baslangic
       zamanina  bakacaktir  (icraci  bir satir dondugunde duracaktir). Ancak,
       dondurulecek satir sayisini LIMIT deyimi ile sinirlarsaniz,  planlamaci
       en ucuz planlama icin bir tahminde bulunabilecektir.

       ANALYZE  secenegi  cumlenin  planlamasinin yapilmasindan baska cumlenin
       calistirilmasini da saglar. Harcanan toplam sure  her  planlama  dugumu
       icin  ayri  ayri gosterilir (milisaniye cinsinden). Ayrica, donen satir
       sayisi da ciktiya eklenir. Bu, planlamacinin tahminlerinin tutarli olup
       olmadigini gorme acisindan da yararlidir.

       "Onemli:
              ANALYZE  kullanildiginda  cumlenin  calistirilacagini unutmayin.
              EXPLAIN'de kullanildiginda, bir  SELECT  cumlesinin  dondurecegi
              cikti  iptal  edileceginden,  cumlenin  bazi yan etkileri varsa,
              onlari bilemeyeceksiniz. INSERT, UPDATE,     DELETE veya EXECUTE
              cumleleri   uzerinde   EXPLAIN   ANALYZE  kullanmak  ve  komutun
              etkilerinin verinizi  etkilememesini  isterseniz,  su  yaklasimi
              kullanabilirsiniz:

                  BEGIN;
                  EXPLAIN ANALYZE ...;
                  ROLLBACK;

PARAMETRELER

       ANALYZE
              Cumleyi calistirir ve gercek calisma surelerini gosterir.

       VERBOSE
              Planlama agacinin bir ozetini degil dahili gosteriminin tamamini
              gosterir. Aslinda, bu  secenek  sadece  hata  ayiklama  amaciyla
              yararlidir.  VERBOSE  ciktisi  explain_pretty_print yapilandirma
              degiskeninin degerine bagli olarak ya  cicili  bicilidir  ya  da
              degildir.

       c"umle  Icra  planini  gormek  istediginiz  bir  SELECT, INSERT, UPDATE,
              DELETE, EXECUTE veya DECLARE cumlesi.

EK BILGI

       Eniyileyici kullanimi hakkinda
       http://www.postgresql.org/docs/8.0/static/performance-tips.html#USING-EXPLAIN
       adresinde daha fazla bilgi bulabilirsiniz.

       PostgreSQL'in   sorgulari   eniyilerken   kabul   edilebilir   kararlar
       verebilmesi  icin,   ANALYZE   komutunun   tablo   icindeki   verilerin
       istatistiksel dagilimini kaydetmis olmasi gerekir. Bu yapilmazsa (ya da
       tablo icindeki verilerin istatistiksel dagilimi son ANALYZE cagrisindan
       sonra  cok  fazla  degisiklige  ugramissa), tahmini maliyetler sorgunun
       gercek ozellikleriyle uyumlu olmayacagi gibi planlamacinin urkutucu bir
       sorgu planlamasi secimi yapmasina sebep olabilir.

       PostgreSQL  7.3  oncesi,  sorgu  plani bir NOTICE ciktisi bicimindeydi.
       Simdi, bir sorgunun sonucu  gibi  (tek  sutunluk  bir  tablo  gosterimi
       olarak) ciktilanmaktadir.

"ORNEKLER

       integer  turunde  tek  bir  sutunu  olan  10000  satirlik  bir  tabloya
       uygulanan basit bir sorgunun planlamasini gormek icin:

       EXPLAIN SELECT * FROM foo;

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

       Eger bir indeks varsa ve WHERE ile indekslenen bir  sorgu  kullanirsak,
       EXPLAIN farkli bir plan gosterebilir:

       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 deger islevi kullanilan bir sorgunun sorgu plani:

       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  hazirlarken bunun icra planini gormek icin, EXPLAIN
       EXECUTE kullanimi ornegi:

       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)

       Suphesiz burada gosterilen degerler islenen tablolarin gercek icerigine
       baglidir.  Ayrica,  bu  degerler  ve  hatta  secilen  sorgu stratejisi,
       planlamacinin surekli gelistirilmesi sebebiyle, PostgreSQL  dagitimlari
       arasinda  bile  degisiklik gosterebilir. Buna ek olarak, ANALYZE komutu
       veri istatistiklerini tahmin etmek icin rasgele ornekleme yapar; bundan
       dolayi,  tablo  verisinde  bir  degisiklik  olmamis bile olsa, taze bir
       ANALYZE cagrisindan sonra maliyet tahminleri degisiklik gosterebilir.

UYUMLULUK

       SQL standardinda EXPLAIN diye bir deyim yoktur.

ILGILI BELGELER

       ANALYZE [analyze(7)].

,CEVIREN

       Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005