์ ๋ฆฌ ๐
pg_stat_statements SQL ์ฟผ๋ฆฌ ์ฑ๋ฅ ๋ถ์ (์คํ ํ์, ํ๊ท ์คํ ์๊ฐ ๋ฑ)
pg_store_plans SQL ์คํ ๊ณํ ์ ์ฅ ๋ฐ ๋ถ์
pg_stat_kcache ์ฟผ๋ฆฌ๋ณ CPU, ๋ฉ๋ชจ๋ฆฌ, ๋์คํฌ I/O ์ฌ์ฉ๋ ํ์ธ
pg_buffercache ์บ์์์ ์ด๋ค ํ
์ด๋ธ์ด ์์ฃผ ์ฌ์ฉ๋๋์ง ํ์ธ
pg_prewarm PostgreSQL ์ฌ์์ ํ ์ค์ํ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ก๋
pg_cron ์๋ํ๋ ๋ฐ์ดํฐ ์ ๋ฆฌ ๋ฐ ๋ฐฑ์
์ค์ผ์ค๋ง
pg_bloat_check ํ
์ด๋ธ๊ณผ ์ธ๋ฑ์ค์ ๋ธ๋กํธ(๋ถํ์ํ ๊ณต๊ฐ) ํ์ธ
pg_repack ๋ค์ดํ์ ์์ด ํ
์ด๋ธ ์ต์ ํ
auto_explain ์คํ ์๊ฐ์ด ๊ธด ์ฟผ๋ฆฌ์ ์คํ ๊ณํ ์๋ ๋ก๊น
pg_stat_io PostgreSQL 16+์์ ๋์คํฌ I/O ๋ถ์
์ด์ ํ๊ฒฝ์์ PostgreSQL์ ํจ์จ์ ์ผ๋ก ๋ชจ๋ํฐ๋งํ๋ ค๋ฉด
โ
์ฟผ๋ฆฌ ๋ถ์: pg_stat_statements, pg_store_plans, auto_explain
โ
๋ฆฌ์์ค ๋ชจ๋ํฐ๋ง: pg_stat_kcache, pg_stat_io, pg_buffercache
โ
๊ณต๊ฐ ๊ด๋ฆฌ: pg_bloat_check, pg_repack
โ
์ด์ ์๋ํ: pg_cron, pg_prewarm
1. pg_stat_statements (์ฟผ๋ฆฌ ์ฑ๋ฅ ๋ถ์)
โ ์ฃผ์ ๊ธฐ๋ฅ:
์คํ๋ SQL ์ฟผ๋ฆฌ์ ํต๊ณ๋ฅผ ์ ์ฅํ๊ณ ๋ถ์ํ ์ ์์.
์ฟผ๋ฆฌ ์คํ ํ์, ํ๊ท ์คํ ์๊ฐ, ๋ฒํผ ์ฌ์ฉ๋ ๋ฑ์ ํ์ธํ ์ ์์.
๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์ฐพ์ ์ฑ๋ฅ ํ๋ํ ๋ ํ์์ ์ธ ํ์ฅ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_stat_statements;
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT * FROM pg_stat_statements ORDER BY total_exec_time DESC LIMIT 10;
โ ์คํ ์๊ฐ์ด ๊ฐ์ฅ ๊ธด ์ฟผ๋ฆฌ 10๊ฐ๋ฅผ ์กฐํ
2. pg_store_plans (์ค์ ์คํ ๊ณํ ์ ์ฅ)
โ ์ฃผ์ ๊ธฐ๋ฅ:
์คํ๋ SQL์ ์ค์ ์คํ ๊ณํ(EXPLAIN ANALYZE) ์ ์ ์ฅํจ.
pg_stat_statements์ ํจ๊ป ์ฌ์ฉํ๋ฉด ์ฟผ๋ฆฌ ํ๋์ ๊ฐ๋ ฅํ ๋์์ด ๋จ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_store_plans;
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT query, plan FROM pg_store_plans ORDER BY total_exec_time DESC LIMIT 5;
โ ์คํ ์๊ฐ์ด ์ค๋ ๊ฑธ๋ฆฐ ์ฟผ๋ฆฌ๋ค์ ์คํ ๊ณํ์ ํ์ธ.
3. pg_stat_kcache (์ฟผ๋ฆฌ๋ณ OS ๋ ๋ฒจ ์ฑ๋ฅ ๋ชจ๋ํฐ๋ง)
โ ์ฃผ์ ๊ธฐ๋ฅ:
๊ฐ ์ฟผ๋ฆฌ์ CPU ์ฌ์ฉ๋, ๋์คํฌ I/O, ๋ฉ๋ชจ๋ฆฌ ์ฌ์ฉ๋์ ์ธก์ .
PostgreSQL ๋ด๋ถ ์ ๋ณด๋ฟ๋ง ์๋๋ผ OS ๋ ๋ฒจ์์ ์ฌ์ฉ๋ ๋ฆฌ์์ค๊น์ง ํ์ธ ๊ฐ๋ฅ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_stat_kcache;
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT * FROM pg_stat_kcache ORDER BY calls DESC LIMIT 10;
โ ๊ฐ์ฅ ๋ง์ด ํธ์ถ๋ ์ฟผ๋ฆฌ์ ๊ทธ์ ๋ฐ๋ฅธ ๋ฆฌ์์ค ์ฌ์ฉ๋์ ํ์ธ.
4. pg_buffercache (๋ฒํผ ์บ์ ์ฌ์ฉ๋ ๋ถ์)
โ ์ฃผ์ ๊ธฐ๋ฅ:
PostgreSQL์ด ๊ด๋ฆฌํ๋ ๋ฒํผ ์บ์์ ํ์ฌ ์ํ๋ฅผ ํ์ธํ ์ ์์.
๋์คํฌ I/O๋ฅผ ์ค์ด๊ธฐ ์ํ ์บ์ ์ต์ ํ์ ์ ์ฉํจ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_buffercache;
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT c.relname, count(*) AS buffers
FROM pg_buffercache b
JOIN pg_class c ON b.relfilenode = c.relfilenode
GROUP BY c.relname
ORDER BY buffers DESC LIMIT 10;
โ ์บ์์์ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํ ์ด๋ธ ํ์ธ.
5. pg_prewarm (๋ฐ์ดํฐ ๋ฏธ๋ฆฌ ๋ก๋)
โ ์ฃผ์ ๊ธฐ๋ฅ:
PostgreSQL์ด ์ฌ์์๋ ๋, ์์ฃผ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ๋ฅผ ๋ฏธ๋ฆฌ ๋ฒํผ ์บ์์ ๋ก๋.
์ฅ๊ธฐ์ ์ผ๋ก ์ฑ๋ฅ์ ์์ ํํ๋ ๋ฐ ์ ์ฉํจ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_prewarm;
๐ก ํน์ ํ ์ด๋ธ์ ๋ฏธ๋ฆฌ ๋ก๋ํ๋ ๋ฐฉ๋ฒ:
SELECT pg_prewarm('your_table');
6. pg_cron (PostgreSQL ๋ด๋ถ์์ ํฌ๋ก ์์ ์คํ)
โ ์ฃผ์ ๊ธฐ๋ฅ:
PostgreSQL์์ ์ ๊ธฐ์ ์ธ ์๋ ๋ฐฑ์
, ๋ฐ์ดํฐ ์ ๋ฆฌ, ํต๊ณ ๊ฐฑ์ ์์
๋ฑ์ ์ํํ ์ ์์.
์ด์ ์์
์ ์๋ํํ ๋ ๋งค์ฐ ์ ์ฉ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_cron;
๐ก ํน์ ์์ ์ ์์ฝ ์คํํ๋ ๋ฐฉ๋ฒ:
SELECT cron.schedule('0 3 * * *', 'VACUUM ANALYZE');
โ ๋งค์ผ ์๋ฒฝ 3์์ VACUUM ANALYZE ์คํ.
7. pg_bloat_check (์ธ๋ฑ์ค์ ํ ์ด๋ธ ๋ธ๋กํธ ํ์ธ)
โ ์ฃผ์ ๊ธฐ๋ฅ:
PostgreSQL ํ
์ด๋ธ๊ณผ ์ธ๋ฑ์ค์ ๋ถํ์ํ ๋ธ๋กํธ(Bloat, ์ธ๋ฐ์์ด ์ฐจ์งํ๋ ๊ณต๊ฐ)๊ฐ ์๋์ง ๊ฒ์ฌ.
๋์คํฌ ๊ณต๊ฐ์ ์ค์ด๊ณ ์ฑ๋ฅ์ ํฅ์์ํฌ ์ ์์.
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT * FROM bloat_check();
โ ๋ธ๋กํธ๊ฐ ๋ฐ์ํ ํ ์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ํ์ธ.
8. pg_repack (๋ค์ดํ์ ์์ด ํ ์ด๋ธ ์ฌ๊ตฌ์ฑ)
โ ์ฃผ์ ๊ธฐ๋ฅ:
VACUUM FULL ์์ด ํ
์ด๋ธ๊ณผ ์ธ๋ฑ์ค๋ฅผ ์ฌ๊ตฌ์ฑ(๋ฆฌํฉํ ๋ง)ํ์ฌ ์ฑ๋ฅ ์ต์ ํ.
์ด์ ์ค์ธ ์๋น์ค์์๋ ํ
์ด๋ธ์ ์ ๋ฆฌํ ์ ์์ด ๋งค์ฐ ์ ์ฉ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
pg_repack -h localhost -U postgres -d your_database -t your_table
โ your_table์ ์ฌ๊ตฌ์ฑํ์ฌ ์ฑ๋ฅ ์ต์ ํ.
9. auto_explain (์๋์ผ๋ก ์คํ ๊ณํ ๋ก๊ทธ ์ ์ฅ)
โ ์ฃผ์ ๊ธฐ๋ฅ:
ํน์ ์คํ ์๊ฐ์ด ์ด๊ณผํ๋ ์ฟผ๋ฆฌ์ ์คํ ๊ณํ์ ์๋์ผ๋ก ๋ก๊น
.
๋๋ฆฐ ์ฟผ๋ฆฌ๋ฅผ ์ถ์ ํ๋ ๋ฐ ๋งค์ฐ ์ ์ฉ.
๐ก ์ค์ ๋ฐฉ๋ฒ (postgresql.conf ์์ )
shared_preload_libraries = 'auto_explain'
log_min_duration_statement = 1000 # 1์ด ์ด์ ๊ฑธ๋ฆฌ๋ ์ฟผ๋ฆฌ ๋ก๊น
๐ก ํ์ฑํ ํ ์คํ ๊ณํ ํ์ธ
SHOW auto_explain.log_min_duration;
10. pg_stat_io (PostgreSQL 16+ ๋ฒ์ ์์ I/O ๋ชจ๋ํฐ๋ง)
โ ์ฃผ์ ๊ธฐ๋ฅ:
PostgreSQL 16๋ถํฐ ์ถ๊ฐ๋ ํ์ฅ์ผ๋ก ๋ฐ์ดํฐ๋ฒ ์ด์ค์ ๋์คํฌ I/O ์ฌ์ฉ๋์ ์ถ์ .
๋์คํฌ ์ฑ๋ฅ ๋ฌธ์ ๋ฅผ ํด๊ฒฐํ๋ ๋ฐ ์ ์ฉ.
๐ก ์ค์น ๋ฐ ํ์ฑํ:
CREATE EXTENSION pg_stat_io;
๐ก ์ฃผ์ ์กฐํ ๋ฐฉ๋ฒ:
SELECT * FROM pg_stat_io ORDER BY total_read DESC LIMIT 10;
โ ๊ฐ์ฅ ๋ง์ด ์ฝํ ํ ์ด๋ธ ๋ฐ ์ธ๋ฑ์ค ํ์ธ.
'Postgresql > ์ค์น' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
pg DB ์ด์คํ ๊ด๋ฆฌ repmgr ๊ตฌ์ถ (0) | 2025.04.05 |
---|---|
pg DB ์ด์คํ ๊ตฌ์ฑ (streaming replication) - primary crash (0) | 2025.04.05 |
pg DB ์ด์คํ ๊ตฌ์ฑ (streaming replication) (0) | 2025.04.01 |
pgBackRest ์ค์น (0) | 2025.03.15 |
postgresql 15 ์ญ์ ํ ์ฌ์ค์น (0) | 2025.03.10 |