DBAtlas · Veritabanı operasyon atlası

Partition'lı tablo için incremental istatistik ayarla

Oracleİstatistik

Komut

-- 1) Incremental modu ac (global istatistik partition synopsis'lerinden turetilir):
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATIS_PART', 'INCREMENTAL', 'TRUE');
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATIS_PART', 'INCREMENTAL_STALENESS', 'USE_STALE_PERCENT');
EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATIS_PART', 'GRANULARITY', 'AUTO');

-- 2) Ilk toplama tam tarar ve synopsis olusturur; sonrakiler yalniz degisen partition'lari okur:
EXEC DBMS_STATS.GATHER_TABLE_STATS(ownname => 'MUSTERI_APP', tabname => 'SATIS_PART');

-- 3) Dogrula:
SELECT DBMS_STATS.GET_PREFS('INCREMENTAL', 'MUSTERI_APP', 'SATIS_PART') AS incremental FROM dual;
SELECT partition_name, num_rows,
       TO_CHAR(last_analyzed,'YYYY-MM-DD HH24:MI:SS') AS last_analyzed, stale_stats
FROM   dba_tab_statistics
WHERE  owner = 'MUSTERI_APP' AND table_name = 'SATIS_PART'
ORDER  BY partition_position NULLS FIRST;

-- 4) Exchange ile yuklenecek staging tablo icin onceden synopsis uret (12c+):
-- EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATIS_STAGE', 'INCREMENTAL', 'TRUE');
-- EXEC DBMS_STATS.SET_TABLE_PREFS('MUSTERI_APP', 'SATIS_STAGE', 'INCREMENTAL_LEVEL', 'TABLE');
-- EXEC DBMS_STATS.GATHER_TABLE_STATS('MUSTERI_APP', 'SATIS_STAGE');

Ne yapar?

Incremental modda her partition için synopsis saklanır; global (tablo düzeyi) istatistikler, özellikle NDV, tüm tabloyu yeniden taramadan synopsis'lerin birleştirilmesiyle hesaplanır. Yalnızca değişen partition'lar yeniden okunur.

Ne zaman kullanılır?

Yeni veri yalnız son partition'lara giren büyük (TB seviyesi) range/interval partition'lı tablolarda, global istatistik toplama süresi bakım penceresini aştığında.

Dikkat

Lisans gerektirmez ancak Partitioning opsiyonu (EE ek lisans) zaten gereklidir. Synopsis'ler SYSAUX'ta yer kaplar (12.2+ HyperLogLog formatı çok daha küçüktür). İlk toplama tam tarama yapar; bakım penceresinde başlat. ESTIMATE_PERCENT AUTO_SAMPLE_SIZE dışında verilirse incremental devre dışı kalır.

DBAtlas'ta aç →

İlgili