DBAtlas · Veritabanı operasyon atlası

Partition pruning'i (bölüm budama) doğrula

Oracle

EXPLAIN PLAN FOR
SELECT * FROM satis WHERE satis_tarihi = DATE '2026-01-15';
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY);
-- Planda 'PARTITION RANGE ITERATOR/SINGLE' ve Pstart/Pstop sütunlarına bakın.

Pstart/Pstop yalnız ilgili bölümlerin okunduğunu gösterir (KEY yerine sayı ideal). Bölüm anahtarına fonksiyon/örtük dönüşüm uygulamak budamayı engeller.

PostgreSQL

SET enable_partition_pruning = on;
EXPLAIN (ANALYZE)
SELECT * FROM satis WHERE satis_tarihi = DATE '2026-01-15';
-- Planda yalnız ilgili partition'ın (alt tablo) tarandığını doğrulayın.

enable_partition_pruning açıkken planda yalnızca eşleşen bölümler görünür; diğerleri 'never executed' olur. Sabit değerlerde plan zamanı, parametrede çalışma zamanı budama olur.

MySQL

-- Hangi bölümlerin tarandığını göster:
EXPLAIN SELECT * FROM satis WHERE satis_tarihi = '2026-01-15';
-- 5.7 ve öncesi: EXPLAIN PARTITIONS SELECT ... (8.0'da kaldırıldı)

MySQL 5.7+ düz EXPLAIN çıktısında 'partitions' sütunu taranacak bölümleri listeler (EXPLAIN PARTITIONS sözdizimi 8.0'da kaldırıldı); yalnız ilgili bölüm(ler) görünmelidir. Tüm bölümler listeleniyorsa budama gerçekleşmiyordur.

SQL Server

-- Bir değerin hangi bölüme düştüğünü bul:
SELECT $PARTITION.pf_satis_tarihi('2026-01-15') AS bolum_no;
-- Gerçek plandaki 'Actual Partition Count' ve 'Actual Partitions Accessed' değerlerini inceleyin.

$PARTITION fonksiyonu bir değerin bölüm numarasını verir. Gerçek yürütme planında erişilen bölüm sayısı 1'e yakınsa budama etkindir; tüm bölümler taranıyorsa predicate uyumsuzdur.

MongoDB

// Sharded kümede shard key ile hedefli sorgu (targeted query):
db.satis.find({ magaza_id: 42 }).explain("executionStats")
// explain'de 'shards' altında yalnız ilgili shard görünmeli.

Sorgu shard key içeriyorsa mongos yalnız ilgili shard'a yönlendirir (targeted); içermiyorsa tüm shard'lara yayılır (scatter-gather). explain çıktısında erişilen shard'ları doğrulayın.

Redis

# Uygulanamaz: tablo/bölüm kavramı yoktur.

Veri dağıtımı Cluster hash slot'ları ile yapılır; sorgu budama yerine anahtar erişimi doğrudandır.

Elasticsearch

# Routing ile ilgili shard'a yönlendir:
GET <index>/_search?routing=musteri42
{ "query": { "term": { "musteri_id": 42 } } }
# Zaman bazlı index pattern ile yalnız ilgili indeksleri sorgula:
GET satis-2026-01/_search

custom routing sorguyu tek shard'a indirger (budama benzeri). Zaman serisi verisinde tarih desenli index adı (satis-2026-01) yalnız ilgili index'lerin taranmasını sağlar; wildcard yerine dar desen kullanın.

DBAtlas'ta aç →