본문 바로가기

소프트웨어 이야기/장고와 루비온레일즈

(PostgreSQL)PostgreSQL의 Idle In Transaction Connection


PostgreSQL의 Idle in Transaction 상태란?

PostgreSQL에 붙는 Connection은 열려있지만, 아무런 쿼리를 보내지 않는 상태를 의미한다. 

세션에 idle in Transaction이 많은 경우 시스템 리소스를 많이 쓰게 된다.

그리고 pgpool, pgbouncer 같은 connection pooler가 transaction pooling mode로 실행되는 경우, 이 설정을 사용하는 의미가 없어질 수도 있다.

커넥션 풀링에는 3가지 종류가 있는데, session pooling / transaction pooling / statement pooling이 있다. 

여기서 transaction pooling은 클라이언트가 커넥션을 맺자마자 커넥션을 할당해주는게 아니라, transaction 동안에만 커넥션을 할당하는 개념을 의미한다.

만약 transaction이 길게 유지된다면, session pooling이나 transaction pooling이나 비슷하게 동작할거다. 참고 - What’s New in PgBouncer 1.6