Partition anahtarlarını ve partition-wise join kullanımını doğrula
OraclePartitionKomut
-- 1) Iki tablonun partition tipi, anahtari ve sayisi ayni mi?
SELECT p.owner, p.table_name, p.partitioning_type, k.column_name,
p.partition_count, p.subpartitioning_type
FROM dba_part_tables p
JOIN dba_part_key_columns k
ON k.owner = p.owner AND k.name = p.table_name AND k.object_type = 'TABLE'
WHERE p.owner = 'MUSTERI_APP'
AND p.table_name IN ('MUSTERI_H', 'SIPARIS_H');
-- 2) Join'i acikla ve plan sekline bak:
EXPLAIN PLAN FOR
SELECT /*+ PARALLEL(4) */ m.il, SUM(s.tutar)
FROM musteri_app.musteri_h m
JOIN musteri_app.siparis_h s ON s.musteri_id = m.id
GROUP BY m.il;
SELECT * FROM TABLE(DBMS_XPLAN.DISPLAY(format => 'BASIC +PARALLEL +PARTITION'));
-- Full PWJ: HASH JOIN, PARTITION HASH ALL (paralelde PX PARTITION HASH ALL) satirinin ALTINDA
-- Partial PWJ: tek tarafta PX SEND PARTITION (KEY)
-- PWJ yok: her iki tarafta PX SEND HASH / BROADCASTNe yapar?
Join anahtarına göre aynı şekilde (equi-partitioned) bölümlenmiş iki tablo, partition çiftleri halinde birleştirilebilir (full partition-wise join); bu, paralel sorgularda dağıtım (redistribution) trafiğini ve bellek kullanımını belirgin şekilde azaltır. Plan şekli PWJ'nin kullanılıp kullanılmadığını gösterir.
Ne zaman kullanılır?
DWH'ta büyük fact-fact veya fact-dimension join'lerini tasarlarken, paralel sorguda yoğun PX dağıtımı (PX Deq Credit: send blkd) görüldüğünde, partition stratejisini doğrularken.
Dikkat
Lisans: Partitioning opsiyonu (EE ek lisans); paralel sorgu Enterprise Edition gerektirir. EXPLAIN PLAN tahmindir, gerçek plan için DISPLAY_CURSOR/SQL Monitor kullan. Full PWJ için partition sayıları (hash'te 2'nin kuvveti önerilir) ve anahtar veri tipleri aynı olmalı. Seri planda da PWJ görülebilir ama asıl kazanç paralelde ortaya çıkar.