반응형
250x250
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
Tags
- java bigdecimal
- COALESCE
- Flux
- VPN
- 도커
- Spring
- AWS CI/CD 구축하기
- chartjs
- aws cicd
- kubeflow
- redis
- or some instances in your deployment group are experiencing problems.
- codedeploy
- Kafka
- Spring Error
- aws
- node
- bootstrap
- docker
- IntelliJ
- codedeploy error
- SQL
- JavaScript
- chart.js
- Python
- codebuild
- Airflow
- PostgreSQL
- Jenkins
- codepipeline
Archives
- Today
- Total
Small Asteroid Blog
postgresql 테이블 lock 조회 및 lock 해제 본문
728x90
Lock 이란 트랜잭션 처리의 순차성을 보장하기 위한 방법이다.
Lock 의 종류에도 공유 Lock 과 베타 Lock 이 있다.
공유 Lock 은 데이터를 읽을 때 사용되어지는 Lock 으로 하나의 데이터를 읽는 것은 여러 사용자가 동시에 할 수 있다.
베타 Lock은 데이터를 변경하고자 할 때 사용되며 트랜잭션이 완료될 때까지 유지된다.
베타 Lock 은 락이 해제될 때까지 다른 트랜잭션은 해당 리소스에 접근할 수 없는 것이다.
나의 경우 베타 락이 걸려있는 것 같았다.
아래 내용을 락을 해제하고 트랜잭션을 다시 사용할 수 있도록 하는 방법이다.
DB 는 Postgresql을 사용했다.
현재 수행중인 SQL 전체 조회
select datname, pid, usename, application_name, client_addr, client_port, backend_start, query_start, wait_event_type, state, backend_xmin query from pg_stat_activity;
LOCK 걸린 테이블 확인
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;
기본적으로 대부분의 lock 테이블은 괜찮으나 RowExclusiveLock 이 검색된다면 해당 테이블에 접근이 지연되어 다른 쿼리에도 영향을 미칠 수 있으므로 반드시 잡고있는 트랜잭션이나 서버 상태 등을 점검하여 lock을 해제 해 주는 작업이 필요하다.
lock 해제
select pg_cancel_backend(pid);
728x90
반응형
'백엔드 > DB' 카테고리의 다른 글
[postgresql] dt did not find any relations (0) | 2021.11.15 |
---|---|
postgresql 테이블 데이터 모두 삭제 (truncate) (0) | 2021.11.15 |
[mysql] cannot check if timestamp is between varchar(23) and varchar(23) - 날짜 조회 쿼리 (0) | 2021.09.28 |
select limit ? offset ? (페이징 활용) (0) | 2021.09.23 |
[SQL] COALESCE , LEAD, LAG 함수 (NULL이 아닌 첫번째 값, 이전값, 다음값) (0) | 2021.07.30 |