Provided by: manpages-tr_1.0.5.1-1.1_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 stun_listesi FROM tablo ORDER BY stun_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