Provided by:
manpages-tr_1.0.5.1-2_all 
ISIM
CLUSTER - bir tabloyu bir indekse gore siralar
KULLANIM
CLUSTER indeks_ismi ON tablo_ismi
CLUSTER tablo_ismi
CLUSTER
A,CIKLAMA
CLUSTER, PostgreSQL'in ismi tablo_ismi ile belirtilen tabloyu
indeks_ismi isimli indeksine gore siralamasini saglar. Indeks
tablo_ismi tablosunda evvelce tanimlanmis bir indeks olmalidir.
Bir tablo bu islem sirasinda, indeks bilgisine gore fiziksel olarak
siralanir. Siralama tek seferlik bir islemdir: islemin ardindan tablo
guncellendiginde degisiklik siralama islemine tabi tutulmaz. Yani yeni
eklenen ya da guncellenen bir satirin indeks sirasina uygun olarak
saklanmasina calisilmaz. Eger bu ya da belirli araliklarla siralama
yapilmak isteniyorsa, komut yinelenerek yeniden siralama
yaptirilmalidir.
Bir tablo bir kere siralandi mi, PostgreSQL siralama icin hangi
indeksin kullanildigini hatirlar. CLUSTER tablo_ismi ile tablo ilk
siralamada kullanilan indeks ile tekrar siralanacaktir.
CLUSTER parametresiz olarak kullanildiginda, komutu kullanan
kullanicinin sahibi oldugu o anki veritabanindaki butun tablolarda ya
da komutu ayricalikli kullanici kullaniyorsa butun veritabanlarindaki
butun tablolarda yeniden siralama yapilir (Hic siralama yapilmamis
tablolara dokunulmaz). Bu sekilde kullanim, bir hareketin ya da bir
islevin icinden gerceklestirilemez.
Bir tablonun siralanmasi sirasinda uzerinde bir ACCESS EXCLUSIVE kilidi
olusturulur. Bu, tablonun islem bitene kadar baska her turlu veritabani
isleminden (hem okuma hem yazma) korunmasini saglar.
PARAMETRELER
indeks_ismi
bir indeksin ismi.
tablo_ismi
Bir tablonun ismi (sema nitelemeli olabilir).
EK BILGI
Bir tablo icinde tek bir satira erisildigi durumlarda verini sirasinin
aslinda onemi yoktur. Ancak, baskalarindan daha fazla veriye erismek
ve bunlari gruplayan bir indeks kullanmak egilimindeyseniz, CLUSTER
kullanmak yararli olacaktir. Bir tablodan belli bir aralikta indeksli
degerler ya da cok sayida satirla eslesen tek bir indeksli deger
isterseniz, indeks, eslesen ilk satir icin bellek sayfasini bir kere
tanimladiktan sonra, eslesen diger tum satirlar bir ihtimal zaten ayni
bellek sayfasinda olacagindan CLUSTER'in hem disk erisiminde hem de
sorguyu hizlandirmakta cok yardimi olur.
Siralama islemi sirasinda, tablonun verisini indeks sirasina gore
iceren gecici bir kopyasi olusturulur. Ayrica tablo uzerindeki her
indeksin gecici kopyalari da olusturulur. Bunun yaninda, disk uzerinde
en azindan tablo ve indeksin toplam boyutunda bos bir alana ihtiyac
olacaktir.
CLUSTER siralama bilgilerini hatirlayacagindan, bir defa siralanan
tablolar kolayca tekrar siralanabilir ve VACUUM'a benzeyen bir ayarlama
ile tablolarin belirli zaman araliklarinda yeniden siralanmasi
saglanabilir.
Planlamacinin tablolarin siralanmasi hakkinda istatistikleri
kaydetmesinden dolayi, yeni siralanmis tablo uzerinde ANALYZE
[analyze(7)] calistirilmasi tercih edilmelidir. Aksi takdirde,
planlamaci zayif sorgu plani secimi yapabilir.
Veriyi siralamanin baska bir yolu daha vardir. CLUSTER cumlesi ozgun
tabloyu belirttiginiz indeks siralamasini kullanarak yeniden siralar.
Satirlar bellekten indeks sirasina gore cekileceginden, eger bellek
tablosu sirasizsa, cok buyuk tablolarda girdiler farkli bellek
sayfalarinda olacagindan, ustune bir de takas olarak disk kullanilmak
zorunda kalinirsa bu islem oldukca yavas olabilir. (PostgreSQL'in bir
arabellegi olsa da dev bir tablo genellikle bu arabellege sigmaz.) Bir
tabloyu siralamanin diger bir yolu, istenen sirayi olusturmak icin
ORDER BY deyimi icindeki PostgreSQL siralama kodunu kullanan,
CREATE TABLE yeni_tablo AS
SELECT s"utun_listesi FROM tablo ORDER BY s"utun_listesi;
cumlesini kullanmaktir. Bu, sirasiz veri icin bir indeksleme yapmaktan
genellikle daha hizlidir. Bundan sonra eski tabloyu silip,
yeni_tablo'ya eski tablonun ismini vermek icin ALTER TABLE ... RENAME
cumlesini kullanin ve tablonun indekslerini yeniden olusturun. Ancak,
bu yaklasim OID'leri, kisitlari, yabanci anahtar iliskilerini,
kullanici izinlerini ve tablonun diger yardimci ozellklerini
korumayacagindan, bu ogeler elle yeniden olusturulmalidir.
"ORNEKLER
employees tablosunu emp_ind indeksine gore siralamak icin:
CLUSTER emp_ind ON emp;
employees tablosunu ayni indeksi kullanarak yeniden siralamak icin:
CLUSTER emp;
Veritabanindaki evvelce siralanmis tum tablolari siralamak icin:
CLUSTER;
UYUMLULUK
SQL standardinda CLUSTER diye bir deyim yoktur.
ILGILI BELGELER
clusterdb(1).
,CEVIREN
Nilgun Belma Buguner <nilgun (at) belgeler.gen.tr>, Nisan 2005