안녕하세요 DB를 배우고 있는 학생입니다.
한 가지 궁금한게 있어서 질문을 드립니다.
PostgreSQL에서 Lock 발생 쿼리 및 Slow 쿼리 확인을 위한 쿼리를 작성 했는데요.
제대로 동작 하는지 확인을 위해 강제로 DB에서 LOCK 및 SLOW 쿼리를 발생 시키고 싶은데요.
어떻게 하는지 알 수 있을까요?
PostgreSQL은 9.6.5.10 버전을 사용하고 있습니다.
느린 쿼리는
select pg_sleep(60);
이런 쿼리로 테스트하시면 되고요.
lock 은 좀 더 복잡한데, 운영환경에서 꼭 관심가져야할 잠금은 배타적 테이블 전체 잠금과 해당 로우 잠금입니다.
잠금은 일반적으로 두 세션(잠그는 쪽과 그것때문에 기다리는 쪽)을 준비하고,
한 쪽에서 잠그고,
begin;
lock .....
이 상황에서
다른 쪽에서 똑 같이 해당 잠금을 시도하면 이 놈은 이전 세션의 트랜잭션이 종료되기 전까지 잠깁니다.
이 상황에서 pg_locks 뷰를 살펴보면 되겠죠.