Partitioning
Bölümleme
- Türkçe karşılığı
- tablo bölümleme
- Okunuşu
- partişıning
Günlük kullanımda iki ad da yaygın.
Kısaca
Partitioning (bölümleme), büyük bir tabloyu tarih aralığı gibi bir kurala göre partition'lara böler; sorgular ilgisiz veriyi atlar, eski veri kolayca silinir.
Veritabanında partitioning nedir?
Milyarlarca satır sipariş ya da log içeren bir tablo sorgulamak için yavaşlar ve bakımı zahmetli hâle gelir. Partitioning ile veritabanı onu tek bir adın arkasında birçok küçük tablo olarak saklar, örneğin her ay için bir partition. Uygulamalar yine tek bir orders tablosunu sorgular; satırların hangi partition'larda olduğuna veritabanı karar verir.
Kural, partition anahtarıdır. Range partitioning tarihler gibi aralıklar kullanır; list partitioning ülke kodları gibi açık değerler; hash partitioning de satırları anahtarın hash'ine göre eşit dağıtır. Bir sorgu bu anahtara göre filtrelediğinde veritabanı, yalnızca eşleşen satırları içerebilecek partition'ları okumak için partition pruning kullanır.
Partitioning veri yönetimini de ucuzlatır. Geçen yılın partition'ını silmek, milyonlarca satırı silmeye kıyasla anında olur; indeksler küçük kalır ve bakım partition partition yapılabilir. PostgreSQL, MySQL, SQL Server ve Oracle'ın hepsi bunu destekler; analitik veri ambarları da büyük tabloları doğal olarak tarihe göre bölümler.
Sık yapılan bir yanlış, partitioning ile sharding'in aynı şey olduğunu düşünmektir. Partitioning genellikle bir tabloyu tek bir veritabanı sunucusu içinde böler; sharding ise veriyi birkaç sunucuya dağıtır. Partitioning, partition anahtarına göre filtrelemeyen ve her partition'ı taraması gerekebilen sorgulara da yardım etmez.
Önemli noktalar
- Partitioning, büyük bir tabloyu tek bir adın arkasında daha küçük partition'lara böler.
- Range, list ve hash partitioning, partition anahtarı üzerinde farklı kurallar kullanır.
- Partition pruning, sorguların yalnızca ilgili partition'ları okumasını sağlar.
- Eski veri bir seferde bütün bir partition olarak silinebilir.
- Partitioning tek bir sunucu içindedir; sharding veriyi sunucular arasında dağıtır.
Örnek
CREATE TABLE events (
id bigint NOT NULL,
created_at timestamptz NOT NULL,
payload jsonb
) PARTITION BY RANGE (created_at);
CREATE TABLE events_2026_09 PARTITION OF events
FOR VALUES FROM ('2026-09-01') TO ('2026-10-01');
CREATE TABLE events_2026_10 PARTITION OF events
FOR VALUES FROM ('2026-10-01') TO ('2026-11-01');
-- Only events_2026_10 is scanned (partition pruning)
SELECT count(*) FROM events WHERE created_at >= '2026-10-01';
-- Removing a month of data is instant
DROP TABLE events_2026_09;Sık sorulan sorular
Partitioning ile sharding arasındaki fark nedir?
Partitioning bir tabloyu, genellikle tek bir veritabanı sunucusunun içinde parçalara böler. Sharding ise veriyi birden çok sunucuya dağıtır; böylece her biri verinin yalnızca bir kısmını tutar. Sharding, makineler arasında yapılan bir yatay bölümleme türüdür.
Bir tabloyu ne zaman bölümlemeliyim?
Tablo çok büyük olduğunda, sorgular genellikle tarih gibi tek bir sütuna göre filtrelediğinde ve eski veri düzenli olarak arşivlenip silindiğinde. Küçük tablolarda çoğunlukla yalnızca karmaşıklık ekler.
Partition pruning nedir?
Veritabanının, sorgunun partition anahtarı üzerindeki filtresine bakarak eşleşen satır içeremeyecek partition'ları atlamasıdır. Bölümlenmiş sorguları hızlı yapan budur.
İlgili sayfalar
- ShardingVeritabanları, s. 28Sharding, bir veritabanının verisini shard adı verilen birkaç sunucuya bölerek ölçeklendirme yöntemidir; her biri toplamın yalnızca bir kısmını saklar ve işler.
- Veritabanı İndeksiVeritabanları, s. 38Veritabanı indeksi, tüm tabloyu taramadan satırları hızla bulmayı sağlayan, bir kitabın sonundaki dizine benzeyen bir veri yapısıdır.
- PostgreSQLVeritabanları, s. 26PostgreSQL, güvenilirliği, standartlara sıkı uyumu ve eklentileriyle bilinen ücretsiz, açık kaynaklı ilişkisel veritabanıdır; web uygulamalarında yaygındır.
- Data WarehouseVeritabanları, s. 7Data warehouse, birçok kaynaktan geçmiş veriyi toplayan ve ekiplerin büyük raporlama sorgularını hızla çalıştırdığı analitik amaçlı merkezi bir veritabanıdır.
- İlişkisel VeritabanıVeritabanları, s. 14İlişkisel veritabanı, veriyi satır ve sütunlardan oluşan tablolarda saklar, tabloları anahtarlarla bağlar ve veriyi SQL ile sorgulayıp birleştirmeyi sağlar.
- ÖlçeklenebilirlikYazılım Mimarisi, s. 30Ölçeklenebilirlik, bir sistemin daha fazla kullanıcı ya da veri gibi artan iş yükünü, kaynak ekleyerek performansı düşmeden karşılayabilme yeteneğidir.
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin