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

PostgreSQL                                                                                            CLUSTER(7)