PostgreSQL Bölümleme Eğitimi

Postgresql Bolumleme Egitimi



Herhangi bir veritabanı için performans, özellikle büyük bir veri söz konusu olduğunda etkili güvenilirlik açısından ele alınması gereken bir ölçümdür. PostgreSQL'de, bir kaydı ararken bir tabloyu taramak için gereken zamandan ve kaynaklardan tasarruf etmek amacıyla tablo bölümlerini oluşturmanız gerekir. Büyük bir tabloyu daha küçük bölümlere böldüğünüzde, daha az bellek değişimine ihtiyaç duyulur ve uygulamanız, veritabanı işlemlerinden tasarruf ederek daha iyi performans gösterir.

Bu yazı PostgreSQL bölümlemesini kapsamaktadır. Kullanabileceğiniz farklı bölümleme seçeneklerini tartışacağız ve daha iyi anlaşılması için bunların nasıl kullanılacağına dair örnekler vereceğiz.

PostgreSQL Bölümleri Nasıl Oluşturulur

Herhangi bir veritabanı, birden fazla girişi olan çok sayıda tablo içerebilir. Kolay yönetim için, veritabanı optimizasyonu ve güvenilirliğe yardımcı olmak için mükemmel ve önerilen bir veri ambarı rutini olan tabloları bölümlere ayırmalısınız. Liste, aralık ve karma dahil olmak üzere farklı bölümler oluşturabilirsiniz. Her birini ayrıntılı olarak tartışalım.







1. Liste Bölümleme

Herhangi bir bölümlemeyi düşünmeden önce bölümler için kullanacağımız tabloyu oluşturmalıyız. Tabloyu oluştururken tüm bölümler için verilen sözdizimini izleyin:



CREATE TABLE tablo_adı(sütun1 veri_türü, sütun2 veri_türü) PARTITION BY (partition_key);

“Tablo_adı”, tablonun sahip olacağı farklı sütunların ve veri türlerinin yanı sıra tablonuzun adıdır. “partition_key” için bölümlemenin gerçekleşeceği sütundur. Örneğin aşağıdaki resimde “dersler” tablosunu üç sütunlu oluşturduğumuzu görüyoruz. Ayrıca bölümleme tipimiz LIST ve bölümleme anahtarımız olarak fakülte sütununu seçiyoruz:







Tablo oluşturulduktan sonra ihtiyacımız olan farklı bölümleri oluşturmalıyız. Bunun için aşağıdaki sözdizimini uygulayın:

(VALUE) İÇİNDEKİ DEĞERLER İÇİN TABLO bölüm_tablo ana_tablo BÖLÜMÜNÜ OLUŞTURUN;

Örneğin aşağıdaki görüntüdeki ilk örnekte, bölüm anahtarımız olarak seçtiğimiz ve değeri “FSET” olan “faculty” sütunundaki tüm değerleri tutan “Fset” adında bir bölümleme tablosu oluşturduğumuz görülüyor. Oluşturduğumuz diğer iki partition için de benzer mantığı kullandık.



Bölümleri aldıktan sonra değerleri oluşturduğumuz ana tabloya ekleyebilirsiniz. Eklediğiniz her değer, seçtiğiniz bölüm anahtarındaki değerlere göre ilgili bölümlemeyle eşleştirilir.

Ana tablodaki tüm girişleri listelersek, eklediğimiz tüm girişlerin bu tabloda yer aldığını görebiliriz.

Bölümleri başarıyla oluşturduğumuzu doğrulamak için oluşturulan bölümlerin her birindeki kayıtları kontrol edelim.

Her bölümlenmiş tablonun yalnızca bölümleme sırasında tanımlanan ölçütlerle eşleşen girdileri nasıl tuttuğuna dikkat edin. Listeye göre bölümleme bu şekilde çalışır.

2. Aralık Bölümleme

Bölüm oluşturmanın bir diğer kriteri ise ARALIK seçeneğinin kullanılmasıdır. Bunun için aralık için kullanılacak başlangıç ​​ve bitiş değerlerini belirtmemiz gerekiyor. Tarihlerle çalışırken bu yöntemi kullanmak idealdir.

Ana tabloyu oluşturmaya yönelik sözdizimi aşağıdaki gibidir:

CREATE TABLE tablo_adı(sütun1 veri_türü, sütun2 veri_türü) ARALIĞA GÖRE BÖLÜM (bölüm_anahtarı);

“cust_orders” tablosunu oluşturduk ve tarihi “partition_key” olarak kullanacak şekilde belirledik.

Bölümleri oluşturmak için aşağıdaki sözdizimini kullanın:

(Başlangıç_değeri) İLE (bitiş_değeri) İLE DEĞERLER İÇİN TABLO bölüm_tablosu ana_tablonun BÖLÜMÜNÜ OLUŞTURUN;

Bölümlerimizi “tarih” sütununu kullanarak üç ayda bir çalışacak şekilde tanımladık.

Tüm bölümleri oluşturup verileri ekledikten sonra tablomuz şu şekilde görünür:

Oluşturulan partitionlardaki girişleri kontrol ettiğimizde bölümlememizin çalıştığını ve yalnızca belirttiğimiz bölümleme kriterlerine uygun kayıtlara sahip olduğumuzu doğrularız. Tablonuza eklediğiniz tüm yeni girişler otomatik olarak ilgili bölüme eklenir.

3. Karma Bölümleme

Tartışacağımız son bölümleme kriteri hash kullanmaktır. Aşağıdaki sözdizimini kullanarak hızlı bir şekilde ana tabloyu oluşturalım:

CREATE TABLE tablo_adı(sütun1 veri_türü, sütun2 veri_türü) HASH'E GÖRE BÖLÜM (bölüm_anahtarı);

Karma ile bölümleme yaparken, modülü ve geri kalanı, yani satırların belirttiğiniz 'partition_key'in karma değerine bölünmesini sağlamalısınız. Bizim durumumuz için 4 modül kullanıyoruz.

Sözdizimimiz aşağıdaki gibidir:

(MODULUS num1, REMAINDER num2) İLE TABLO bölüm_tablosu ana_tablonun DEĞERLER İÇİN BÖLÜMÜNÜ OLUŞTURUN;

Bölümlerimiz aşağıdaki gibidir:

“Ana_tablo” için aşağıda gösterilen girişleri içerir:

Oluşturulan partitionların girişlerine hızlı bir şekilde ulaşabiliyor ve bölümlememizin çalıştığını doğrulayabiliyoruz.

Çözüm

PostgreSQL bölümleri, zamandan tasarruf etmek ve güvenilirliği artırmak için veritabanını optimize etmenin kullanışlı bir yoludur. Mevcut farklı seçenekler de dahil olmak üzere bölümlendirmeyi ayrıntılı olarak tartıştık. Ayrıca bölümlerin nasıl uygulanacağına dair örnekler verdik. Onları deneyin!