Partition oluştur / böl / at
Oracle
-- RANGE partition ekle
ALTER TABLE satislar ADD PARTITION p2026 VALUES LESS THAN (TO_DATE('2027-01-01','YYYY-MM-DD'));
-- Var olan partition'ı böl
ALTER TABLE satislar SPLIT PARTITION pmax AT (TO_DATE('2027-01-01','YYYY-MM-DD')) INTO (PARTITION p2026, PARTITION pmax);
-- Partition at
ALTER TABLE satislar DROP PARTITION p2020 UPDATE INDEXES;RANGE/LIST/HASH partition destekler. DROP PARTITION o bölümdeki tüm satırları siler; UPDATE INDEXES ile global index'ler geçerli kalır. Interval partition ile otomatik ekleme yapılabilir.
PostgreSQL
-- Declarative partitioning: ana tablo
CREATE TABLE satislar (id bigint, tarih date, tutar numeric) PARTITION BY RANGE (tarih);
-- Yeni partition ekle
CREATE TABLE satislar_2026 PARTITION OF satislar FOR VALUES FROM ('2026-01-01') TO ('2027-01-01');
-- Bağımsız (var olan) bir tabloyu partition olarak bağla
CREATE TABLE satislar_2027 (LIKE satislar INCLUDING ALL);
ALTER TABLE satislar ATTACH PARTITION satislar_2027 FOR VALUES FROM ('2027-01-01') TO ('2028-01-01');
-- Partition'ı ayır (tablo silinmez, bağımsız tablo olarak kalır)
ALTER TABLE satislar DETACH PARTITION satislar_2026;Çekirdek PostgreSQL'de SPLIT/MERGE PARTITION yoktur (PG17 itibarıyla); bölmek için partition'ı DETACH edip yeni sınırlarla iki partition oluşturur, veriyi taşıyıp ATTACH edersiniz. DETACH ... CONCURRENTLY (PG14+) lock süresini azaltır.
MySQL
-- Partition'lı tablo
CREATE TABLE satislar (id BIGINT, tarih DATE) PARTITION BY RANGE (YEAR(tarih)) (
PARTITION p2024 VALUES LESS THAN (2025),
PARTITION p2025 VALUES LESS THAN (2026),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
-- Partition ekle / böl / at
ALTER TABLE satislar REORGANIZE PARTITION pmax INTO (
PARTITION p2026 VALUES LESS THAN (2027),
PARTITION pmax VALUES LESS THAN MAXVALUE
);
ALTER TABLE satislar DROP PARTITION p2024;Partition kolonu PRIMARY KEY / UNIQUE anahtarların parçası olmalıdır. RANGE'de bölme/birleştirme REORGANIZE PARTITION ile yapılır. DROP PARTITION satırları da siler (RANGE/LIST).
SQL Server
-- 1) Partition function ve scheme
CREATE PARTITION FUNCTION pf_tarih (date) AS RANGE RIGHT FOR VALUES ('2025-01-01','2026-01-01');
CREATE PARTITION SCHEME ps_tarih AS PARTITION pf_tarih ALL TO ([PRIMARY]);
-- 2) Yeni sınır ekle (böl)
ALTER PARTITION SCHEME ps_tarih NEXT USED [PRIMARY];
ALTER PARTITION FUNCTION pf_tarih() SPLIT RANGE ('2027-01-01');
-- 3) Sınır kaldır (birleştir)
ALTER PARTITION FUNCTION pf_tarih() MERGE RANGE ('2025-01-01');Partition function + scheme tanımlanır, tablo CREATE TABLE ... ON ps_tarih(tarih) ile bu şemaya kurulur. SPLIT öncesi NEXT USED file group ayarlanmalıdır. Veri atmak için SWITCH PARTITION ile bir staging tabloya taşınır.
MongoDB
// MongoDB'de tablo partition'ı yerine sharding kullanılır
sh.shardCollection("db.satislar", { tarih: 1 });
// Zaman serisi için native time-series koleksiyon
db.createCollection("olcumler", { timeseries: { timeField: "ts", granularity: "hours" } });Klasik anlamda partition yoktur. Yatay bölme sharding ile chunk'lar üzerinden yapılır; zaman bazlı veride time-series koleksiyonlar otomatik bucket'lama sağlar.
Redis
# Uygulanamaz: Redis'te tablo/partition kavramı yoktur; ölçekleme Redis Cluster hash slot'ları (16384) ile yapılır.Redis Cluster anahtarları 16384 hash slot'a dağıtır; bu uygulama düzeyinde bölmedir, tablo partition'ı değildir. Manuel partition komutu yoktur.
Elasticsearch
# ILM politikası + data stream ile zaman bazlı otomatik bölme (rollover)
PUT _ilm/policy/loglar-policy
{ "policy": { "phases": { "hot": { "actions": { "rollover": { "max_size": "50gb", "max_age": "30d" } } } } } }
PUT _index_template/loglar-tmpl
{ "index_patterns": ["loglar*"], "data_stream": {}, "template": { "settings": { "index.lifecycle.name": "loglar-policy" } } }Elasticsearch'te bölme, index'in shard'lara ayrılması ve zaman serisi için ILM + data stream (rollover) ile yeni backing index oluşturulmasıyla sağlanır. Eski index'ler ILM ile silinebilir.