본문 바로가기
데이터베이스

[데이터베이스] ITL(Interested Transaction List)

by 꿈꾸는나그네 2021. 7. 24.
반응형

▶ ITL(Interested Transaction List)

특정 블록을 변경하고자 하는 트랜잭션의 목록을 의미하며, 블록의 헤더에서 그 정보를 관리한다. 
블록을 변경하고자 하는 모든 트랜잭션은 블록 헤더의 ITL의 엔트리 중 하나로 자신을 등록해야 한다. 

 

- INITRANS : 블록 헤더마다 몇 개의 ITL 엔트리를 미리 확보할 지를 결정한다. 가령 INITRANS의 값을 10으로 주면 10개의 동시 트랜잭션을 위한 공간이 마련된다.

 

- MAXTRANS : 최대 몇개의 ITL 엔트리를 허용할지를 결정한다. 가령 MAXTRANS의 값을 50으로 주면 최대 50개까지의 동시 트랜잭션을 허용한다. MAXTRANS의 기본값은 255이며, 오라클 10g부터는 MAXTRANS는 255로 고정된다. MAXTRANS 값을 지정해도 오라클은 이 값을 무시하며 항상 255의 값을 사용한다.

 

- PCTFREE : 블록이 최초 생성될 때는 INITRANS에 지정된 값만큼 ITL 엔트리가 확보되었다가, 동시 트랜잭션이 증가하면 PCTFREE로 확보된 영역 내에서 MAXTRANS만큼 추가로 확장된다.

 

만일 동시 트랜잭션이 왕성할 것으로 예상되는 테이블이라면 INITRANS를 충분히 주는 것이 좋다. INITRANS를 충분히 주면 동적으로 공간을 확보하는 오버헤드가 줄어들며, ITL 엔트리 부족에 따른 TX 락 경합이 발생할 확률도 줄어든다. 오라클 10g부터는 MAXTRANS의 값이 255로 고정되므로 잘못된 MAXTRANS 값 지정으로 인해 성능 문제가 생길 소지가 사라졌다. PCTFREE 값을 비정상적으로 작게 설정하는 경우 ITL을 동적으로 확장할 여유공간이 부족해서 문제가 될 수도 있다. 

반응형