2017-10-12 20 views
0

Postgres 및 ORACLE의 시스템 테이블에서 교착 상태가 해제되었는지 여부를 확인하고 싶습니다.Postgres의 테이블 교착 상태를 확인하는 쿼리

교착 상태를 확인하는 방법을 알려주십시오.

+0

귀하의 질문에 이해가되지 않습니다. "테이블의 교착 상태"와 같은 것은 없습니다. 하나의 테이블은 교착 상태를 "절대적으로"가질 수 있습니다 **. 교착 상태 ** 항상 ** 적어도 두 개의 _transactions_ - 다음 세션/트랜잭션 교착 상태가 아닌 "테이블". –

+0

만약'deadlock_timeout'을 수정하지 않았다면 Missisipi와 voila가 하나가 될 때까지 카운트합니다. –

답변

0

교착 상태가 발생하지 않습니다. Postgres 또는 Oracle에서 교착 상태를 발견하면 즉시 트랜잭션 중 하나가 중단됩니다. 이는 교착 상태가 본질적으로 개입없이 진행되지 않기 때문입니다.

당신이 할 수있는 것은 정상적인 자물쇠가 시스템에 존재하는지 그리고 얼마나 오래 있었는지를 보는 것입니다. 올바른 장소에서 커밋되지 않은 긴 느리게 실행되는 트랜잭션을 나타낼 수 시간 또는 코드를 개최

잠금 등

긴 보류 된 잠금은 교착 상태가 향후 발생 가능성을 증가 .

포스트 그레스

당신은 pg_locks보기를 통해이 작업을 수행 할 수 있습니다.

PostgreSQL의 위키는 https://wiki.postgresql.org/wiki/Lock_Monitoring

에 잠금보고에 대한 페이지를 가지고 있으며, pg_locks보기 https://www.postgresql.org/docs/current/static/view-pg-locks.html

오라클에 설명되어 있습니다

오라클은 또한 현재 잠금을 표시하는보기를 제공합니다

하지만, 그들은 사용하기에 조금 더 복잡합니다. 당신은 당신이 실제로 한 후 잠금 장치는 일반적으로 유지되지 않기 때문에하는 제품이 무엇인지 약간의 시간을 할애해야하지만

인트로는 두 경우 모두 https://docs.oracle.com/cd/E11882_01/server.112/e40402/dynviews_2027.htm#REFRN30121

에서 참조 http://www.dba-oracle.com/t_grid_rac_db_locks_latches.htm

에서 확인할 수있다 동시에 전체 테이블에서 테이블의 다른 부분이 다른 트랜잭션에 의해 동시에 잠길 수 있습니다. 또한이 뷰에 표시되는 테이블 만이 아닙니다.

마찬가지로 서로 다른 잠금 유형 (공유, 독점 등)은 다양한 유형의 동시 활동을 차단합니다.