๋ฐ์ํ
1. ๋ฝ ํ์ธ ์ฟผ๋ฆฌ
SELECT t.relname,
l.locktype,
page,
virtualtransaction,
pid,
mode,
granted
FROM pg_locks l,
pg_stat_all_tables t
WHERE l.relation = t.relid
ORDER BY relation ASC;
์ด๋ค ํ ์ด๋ธ์ ์ด๋ค PID๊ฐ ๋ฝ ๊ฑธ์๋์ง ํ์ธ ๊ฐ๋ฅ
ํ์ฌ ํ๋์ค์ธ ์ธ์ ๋ณด๊ธฐ (pg_stat_activity๋ ๊ฐ์ด๋ณด๋ฉด์ ํ์ธ)
SELECT pid, state, query, wait_event_type, wait_event
FROM pg_stat_activity
WHERE state != 'idle';
2. ๋๊ฐ ๋๊ตฌ๋ฅผ ๋ง๊ณ ์๋์ง ํ์ธ
SELECT pid,
pg_blocking_pids(pid) AS blocked_by
FROM pg_stat_activity
WHERE cardinality(pg_blocking_pids(pid)) > 0;
ํ์ฌ ์คํ์ค์ด๊ฑฐ๋ ๋๊ธฐ์ค์ธ ์ฟผ๋ฆฌ๋ค ํ์ธ ๊ฐ๋ฅ
๋๊ฐ ๋๊ตฌ๋ฅผ ๋ง๊ณ ์๋์ง (blocker ์ ๋ณด๊น์ง ํ์ธ)
SELECT blocked.pid AS blocked_pid,
blocked.query AS blocked_query,
blocking.pid AS blocking_pid,
blocking.query AS blocking_query
FROM pg_stat_activity blocked
JOIN pg_stat_activity blocking
ON blocking.pid = ANY(pg_blocking_pids(blocked.pid));
3. blocker์ธ์ง victim์ธ์ง ํ์ธ ํ terminate > ๋ฌธ์ ์๋ ์ธ์ ๊ฐ์ ์ข ๋ฃ (๋ฝ ํด์ )
SELECT pg_terminate_backend(12345); -- PID ๋ฃ๊ธฐ
ํด๋น PID๊ฐ ์ ์ ํ๊ณ ์๋ ์ธ์ ์ ๊ฐ์ ๋ก ์ข ๋ฃํจ
๋ฝ์ด ํด์ ๋จ ( ์ข ๋ฃ๋๋ฉด์ ๋กค๋ฐฑ๋ ๊ฐ์ด ๊ฐ )
Blocker vs Victim
| ๊ตฌ๋ถ | ์ค๋ช | ์์ |
| Blocker | ๋ฝ์ ๋จผ์ ์ก๊ณ ์๋ ์ธ์ . ๋ค๋ฅธ ํธ๋์ญ์ ์ด ๊ธฐ๋ค๋ฆฌ๋ ์์ธ | ํธ๋์ญ์ ์์ ํ UPDATE ํ์ง๋ง ์ปค๋ฐ/๋กค๋ฐฑ ์ ํ ์ํ |
| Victim | ๋ฝ์ด ํ๋ฆฌ๊ธธ ๊ธฐ๋ค๋ฆฌ๋ ์ธ์ . ๋งํ ์ชฝ | ๋ค๋ฅธ ์ธ์ ์ด ๊ฐ์ row๋ฅผ UPDATE ํ๋ ค๊ณ ์๋ํจ → ๋๊ธฐ ์ํ ๋จ |
์:
1. ์ธ์
A๊ฐ row๋ฅผ UPDATE ํ ์ปค๋ฐ ์ํจ → Blocker
2. ์ธ์
B๊ฐ ๊ฐ์ row UPDATE ์๋ → Victim (๋๊ธฐ์ํ)
์ฃผ์ํ ์
| ์ํฉ | ์ค๋ช |
| ์ธ์ ์ด ๋น์ ์์ | ํธ๋์ญ์ ์ด ์ค๋ ์ด๋ ค ์๊ณ ์๋ฌด ์์ ๋ ์ ํ๋ฉด ์ข ๋ฃํด๋ ๋จ |
| ์ค์ํ ์์ ์ค | ์: ๋ฐฐ์น, ๋ง์ด๊ทธ๋ ์ด์ , ์ฌ์ฉ์ DML ๋ฑ์ด๋ฉด ์ ๋ ํจ๋ถ๋ก ์ข ๋ฃํ๋ฉด ์ ๋จ |
| ์ด์ DB | ๋ฌด์์ terminate ํ๋ฉด ๋ฐ์ดํฐ ์์ค, ์ฅ์ ์ ๋ฐ ๊ฐ๋ฅํจ |
| Deadlock ์ํ | pg_stat_activity, pg_locks, pg_blocking_pids() ๊ฐ์ด ํ์ธ ํ ํ๋จํด์ผ ํจ |
๋ฐ์ํ
'๐๏ธ ๋ฐฑ์๋ > ๐๏ธDB' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
| # PostgreSQL pg_dump ยท pg_restore ์ฌ์ฉ๋ฒ ๋ฐ ๋ก์ปฌ DB ๋ณต์ ์ ๋ฆฌ (0) | 2025.11.25 |
|---|---|
| # org.postgresql.util.PSQLException: The authentication type 10 is not supported DB ์ธ์ฆ๋ฐฉ์ ์๋ฌ ํด๊ฒฐ๋ฐฉ๋ฒ (2) | 2025.07.08 |
| # DB multipolygon ์์น ์กฐ์ ํ๊ธฐ (0) | 2025.04.07 |
| # JOIN (0) | 2025.03.06 |
| dbeaver(๋๋น๋ฒ) auto commit ํด์ (0) | 2025.02.19 |
