PostgreSQL İNDEX Nedir?
PostgreSQL İNDEX Nedir?
veritabanı açısından Index in anlamı Milyonlarca kayıt içerisinde aranan kaydın çok kısa getirilmesidir.PostgrSQL veritabanında Index kullanımı en çok performans, hız ve bellek tasarrufu gerektiren ortamlarda ortaya çıkar. Milyonlarca yada Milyarlarca kaydın olduğu bir tabloda bir kaydı Index kullanarak daha az kayıt okuyup daha kısa sürede çok çabuk şekilde bulabiliriz.
İndex mimarisini anlamak açısından örnek bir senaryo ile başlayalım.
Resimdeki gibi 3 katlı bir kütüphane olduğunu ve yaklaşık 2000000 kitap olduğunu düşünelim . Kitabın adını, yazarını bildiğimizi farzedelim fakat kitaplar belirli bir sıraya göre değil rastgele sıralanmıştır. Burada istediğimiz kitabı bulmak belki günlerimizi , aylarımızı belki de yıllarımızı alacaktır. Bu senaryoyu index olmayan tablolara örnek olarak düşünebilirsiniz.
Doğru olan örneğe gelecek olursak 3 katı belirli bir harflendirme sırasına göre bölünse ve kitapları da belirlenen sıralama kuralına göre yerleştirilse ve hangi kitabın nerede olduğu ile ilgili yardımcı sistem olsaydı , kitaba ulaşmak isteyen kişi o sisteme bakarak istenilen kitabın hangi kattaki hangi rafta ilgili rafta hangi sırada olduğunu kolaylıkla bulabilecekti.
İndexler, tablolarda ki verilere en kısa yoldan ve daha hızlı bir şekilde erişmek için gereklidir.
İndexler veritabanı sistemleri için en önemli yapılardan birisidir. İndex kullanmayan sistemlerde performans sorunları yaşanabilir. İndexlerin genel kullanımı aşağıdaki gibidir.
CREATE INDEX ad ON "Müsteriler"("Adi_Soyadi" )
PostgreSQL farklı index türlerini destekler. Her index türü için, farklı türdeki sorgulara en uygun olan farklı bir algoritma kullanılır.
PostgreSQL’in index türleri:
B-tree ,
hash ,
GIST,
SP-GIST,
GIN,
BRIN
Yukarıda bahsedilen index tiplerini daha iyi anlamak için ayrı başlıklar altında değineceğiz.
İndex olmayan bir tablo disk üzerinde bütün kayıtları tek tek aramaya çalışacak ve bundan dolayı sorgumuzun dönmesi uzun ve maliyetli olacaktır. İndex olmayan tablolar sadece sorgu sonucunu uzatmaz . Cpu ,disk kullanım oranını arttırır ve veritabanın çalıştığı makineyi cpu,disk olarak dar boğaza düşürür.
NOT : Bazı durumlar da index oluşturulsa dahi tablonun tarandığını görürüz . Bunun sebebi yazılan sorgunun tabloyu tarayarak daha hızlı cevap vereceğini indexin yavaşlatacağını tespit ettiğinden dolayıdır.