DBAtlas · Veritabanı operasyon atlası

EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL) ile planı derinlemesine oku

PostgreSQLPerformans

Komut

-- ANALYZE sorguyu gerçekten çalıştırır: DML'i transaction içinde çalıştırıp geri al
BEGIN;
EXPLAIN (ANALYZE, BUFFERS, SETTINGS, WAL, VERBOSE)
UPDATE musteri SET bakiye = bakiye + 1 WHERE il = 'Ankara';
ROLLBACK;

-- SELECT için
EXPLAIN (ANALYZE, BUFFERS, SETTINGS)
SELECT ad FROM musteri ORDER BY ad DESC LIMIT 10 OFFSET 1000;

Ne yapar?

Planı gerçek çalıştırma istatistikleriyle verir: BUFFERS her düğümdeki shared hit/read/dirtied ve temp bloklarını, SETTINGS planı etkileyen varsayılan dışı parametreleri, WAL üretilen WAL kayıt/bayt miktarını gösterir.

Ne zaman kullanılır?

Tahmini ve gerçek satır sayısı farkını, diske taşan sort/hash'i (Sort Method: external merge, temp read/written) ve DML'in WAL maliyetini analiz etmek için.

Dikkat

ANALYZE sorguyu gerçekten çalıştırır; DML'i mutlaka BEGIN/ROLLBACK içinde çalıştır (trigger'lar ve sequence artışları yine de gerçekleşir). Okuma ipuçları: 'rows' tahmini ile 'actual rows' arasında 10 kat ve üzeri fark istatistik sorununa işaret eder; döngüdeki düğümlerde süre ve satırlar loops başınadır, toplam için loops ile çarp; Index Only Scan'de yüksek 'Heap Fetches' visibility map'in güncel olmadığını, 'Workers Planned' > 'Workers Launched' worker havuzunun tükendiğini gösterir. Timing yükü yüksek sistemlerde TIMING OFF kullan; COSTS OFF, JIT bölümünü de gizler.

DBAtlas'ta aç →

İlgili