DBAtlas · Veritabanı operasyon atlası

Partition anahtarlarını ve partition-wise join kullanımını doğrula

OraclePartition

Komut

-- 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 / BROADCAST

Ne 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.

DBAtlas'ta aç →

İlgili