Lock query 관리는 중요해서, 현재 맡고 있는 서비스에서는 Lock query 일정 시간이 지났을 때,
알림이 오도록 크론이 돌고 있다.
입사 했을때 부터 누군가 만들어 놓은 크론이라 제대로 확인을 하지 않았지만,
확인이 필요할 것 같고, Lock query 보는법도 알아놔야 될 것 같아서 정리
1. Lock query 확인방법
# 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;
relname | locktype | page | virtualtransaction | pid | mode | granted
--------------+----------+------+--------------------+-------+-----------------+---------
pg_class | relation | | 4/5170 | 30880 | AccessShareLock | t
pg_index | relation | | 4/5170 | 30880 | AccessShareLock | t
pg_namespace | relation | | 4/5170 | 30880 | AccessShareLock | t
(3 rows)
mode 부분이 중요할 것 같아서 공식문서
https://www.postgresql.org/docs/13/explicit-locking.html
13.3. Explicit Locking
13.3. Explicit Locking 13.3.1. Table-Level Locks 13.3.2. Row-Level Locks 13.3.3. Page-Level Locks 13.3.4. Deadlocks 13.3.5. Advisory Locks PostgreSQL provides various lock …
www.postgresql.org
Requested Lock Mode 가 밑으로 갈 수록 심각한 Lock 을 의미
2. Lock query kill
# SELECT pg_cancel_backend(30880);
# SELECT pg_terminate_backend(30880) FROM pg_stat_activity ;
pg_cancel_backend는 해당 PID 만 중지
pg_terminate_backend는 해당 PID와 연계된 모든 상위 Query Process를 모두 중지
'Database > PostgreSQL' 카테고리의 다른 글
[PostgreSQL] Uninstall for Mac (0) | 2022.01.30 |
---|---|
[PostgreSQL] Install for Mac (0) | 2022.01.30 |
[PostgreSQL] 현재 연결 수 (pg_stat_activity) (1) | 2021.12.11 |
[PostgreSQL] Log (0) | 2021.12.05 |
[PostgreSQL] dump (0) | 2021.10.25 |