ITL이란 특정 블록을 변경하고자 하는 트랜잭션의 목록을 의미한다. ITL은 각 블록의 헤더에서 데이터 블록에서 변경된 트랜잭션 정보를 관리한다.
ITL의 주요 기능은 다음과 같다.
트랜잭션 관리
ITL은 데이터 블록 내의 각 트랜잭션에 대한 정보를 통해 트랜잭션들을 관리한다.
동시성 제어
다수의 트랜잭션이 동시에 동일한 데이터 블록을 수정하려고 할 때, ITL이 어떤 트랜잭션이 데이터 블록을 수정했는지 추적하고, 이를 기반으로 충돌을 감지하고 해결한다.
데이터 블록 상태 유지
ITL은 데이터 블록의 각 행이 어떤 트랜잭션에 의해 수정되었는지 추적할 수 있는데, 이를 통해 데이터 블록의 현재 상태와 트랜잭션 완료 여부를 파악할 수 있다.
UNDO 관리
ITL은 트랜잭션이 롤백될 때 필요한 undo 정보를 관리한다. 이를 통해 트랜잭션이 실패하거나 취소될 경우 데이터 블록을 원래 상태로 되돌릴 수 있다.
ITL슬롯은 데이터 블록마다 정해진 수만큼만 존재하기 때문에, 다수의 트랜잭션이 동시에 같은 블록을 수정하려고 할 때 슬롯이 부족할 수 있다. 이때 성능저하가 일어나는데 이를 ITL contention이라고 한다. 이를 해결하기 위해 INITRANS,MAXTRANS 파라미터를 조정하거나 트랜잭션 최적화를 해야한다.
테이블이나 인덱스의 초기 ITL 슬롯 수를 조절하는 파라미터
블록 당 최대 ITL 슬롯 수를 설정하는 파라미터, 현재는 db가 ITL 슬롯을 자동으로 최적화해서 관리해주기 때문에 거의 사용하지 않는다.