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

İSİM

       CLUSTER - bir tabloyu bir indekse göre sıralar

KULLANIM

       CLUSTER indeks_ismi ON tablo_ismi
       CLUSTER tablo_ismi
       CLUSTER

AÇIKLAMA

       CLUSTER, PostgreSQL'in ismi tablo_ismi ile belirtilen tabloyu indeks_ismi isimli indeksine
       göre sıralamasını sağlar. İndeks tablo_ismi  tablosunda  evvelce  tanımlanmış  bir  indeks
       olmalıdır.

       Bir  tablo  bu  işlem sırasında, indeks bilgisine göre fiziksel olarak sıralanır. Sıralama
       tek seferlik bir işlemdir: işlemin ardından  tablo  güncellendiğinde  değişiklik  sıralama
       işlemine  tabi  tutulmaz.  Yani yeni eklenen ya da güncellenen bir satırın indeks sırasına
       uygun olarak saklanmasına çalışılmaz. Eğer bu  ya da belirli aralıklarla sıralama yapılmak
       isteniyorsa, komut yinelenerek yeniden sıralama yaptırılmalıdır.

       Bir  tablo  bir  kere sıralandı mı, PostgreSQL sıralama için hangi indeksin kullanıldığını
       hatırlar. CLUSTER tablo_ismi  ile  tablo  ilk  sıralamada  kullanılan  indeks  ile  tekrar
       sıralanacaktır.

       CLUSTER  parametresiz olarak kullanıldığında, komutu kullanan kullanıcının sahibi olduğu o
       anki veritabanındaki bütün tablolarda ya  da  komutu  ayrıcalıklı  kullanıcı  kullanıyorsa
       bütün   veritabanlarındaki   bütün  tablolarda  yeniden  sıralama  yapılır  (Hiç  sıralama
       yapılmamış tablolara dokunulmaz). Bu şekilde kullanım, bir hareketin  ya  da  bir  işlevin
       içinden gerçekleştirilemez.

       Bir  tablonun  sıralanması sırasında üzerinde bir ACCESS EXCLUSIVE kilidi oluşturulur. Bu,
       tablonun işlem bitene kadar başka her türlü veritabanı işleminden (hem  okuma  hem  yazma)
       korunmasını sağlar.

PARAMETRELER

       indeks_ismi
              bir indeksin ismi.

       tablo_ismi
              Bir tablonun ismi (şema nitelemeli olabilir).

EK BİLGİ

       Bir  tablo  içinde  tek  bir  satıra  erişildiği durumlarda verini sırasının aslında önemi
       yoktur. Ancak, başkalarından daha fazla veriye erişmek  ve bunları  gruplayan  bir  indeks
       kullanmak  eğilimindeyseniz,  CLUSTER  kullanmak yararlı olacaktır. Bir tablodan belli bir
       aralıkta indeksli değerler ya da  çok  sayıda  satırla  eşleşen  tek  bir  indeksli  değer
       isterseniz,  indeks, eşleşen ilk satır için bellek sayfasını bir kere tanımladıktan sonra,
       eşleşen diğer tüm satırlar bir ihtimal zaten aynı bellek sayfasında olacağından CLUSTER'ın
       hem disk erişiminde hem de sorguyu hızlandırmakta çok yardımı olur.

       Sıralama  işlemi  sırasında,  tablonun  verisini  indeks  sırasına  göre içeren geçici bir
       kopyası oluşturulur. Ayrıca tablo üzerindeki her indeksin geçici kopyaları da oluşturulur.
       Bunun  yanında,  disk üzerinde en azından tablo ve indeksin toplam boyutunda boş bir alana
       ihtiyaç olacaktır.

       CLUSTER sıralama bilgilerini hatırlayacağından, bir defa sıralanan tablolar kolayca tekrar
       sıralanabilir ve VACUUM'a benzeyen bir ayarlama ile tabloların belirli zaman aralıklarında
       yeniden sıralanması sağlanabilir.

       Planlamacının tabloların sıralanması hakkında istatistikleri kaydetmesinden  dolayı,  yeni
       sıralanmış  tablo  üzerinde  ANALYZE  [analyze(7)] çalıştırılması tercih edilmelidir. Aksi
       takdirde, planlamacı zayıf sorgu planı seçimi yapabilir.

       Veriyi sıralamanın başka bir yolu daha vardır. CLUSTER cümlesi özgün tabloyu belirttiğiniz
       indeks  sıralamasını  kullanarak  yeniden sıralar. Satırlar bellekten indeks sırasına göre
       çekileceğinden, eğer bellek tablosu sırasızsa, çok büyük tablolarda girdiler farklı bellek
       sayfalarında olacağından, üstüne bir de takas olarak disk kullanılmak zorunda kalınırsa bu
       işlem oldukça yavaş  olabilir.  (PostgreSQL'in  bir  arabelleği  olsa  da  dev  bir  tablo
       genellikle  bu  arabelleğe sığmaz.) Bir tabloyu sıralamanın diğer bir yolu, istenen sırayı
       oluşturmak için ORDER BY deyimi içindeki PostgreSQL sıralama kodunu kullanan,

           CREATE TABLE yeni_tablo AS
               SELECT sütun_listesi FROM tablo ORDER BY sütun_listesi;

       cümlesini kullanmaktır. Bu, sırasız veri için bir  indeksleme  yapmaktan  genellikle  daha
       hızlıdır.  Bundan sonra eski tabloyu silip, yeni_tablo'ya eski tablonun ismini vermek için
       ALTER TABLE ... RENAME cümlesini kullanın  ve  tablonun  indekslerini  yeniden  oluşturun.
       Ancak, bu yaklaşım OID'leri, kısıtları, yabancı anahtar ilişkilerini, kullanıcı izinlerini
       ve  tablonun  diğer  yardımcı  özellklerini  korumayacağından,  bu  öğeler  elle   yeniden
       oluşturulmalıdır.

ÖRNEKLER

       employees tablosunu emp_ind indeksine göre sıralamak için:

           CLUSTER emp_ind ON emp;

       employees tablosunu aynı indeksi kullanarak yeniden sıralamak için:

           CLUSTER emp;

       Veritabanındaki evvelce sıralanmış tüm tabloları sıralamak için:

           CLUSTER;

UYUMLULUK

       SQL standardında CLUSTER diye bir deyim yoktur.

İLGİLİ BELGELER

       clusterdb(1).

ÇEVİREN

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