ITL(Interested Transaction List)

devkwon·2024년 7월 26일
0

Oracle

목록 보기
1/3

ITL이란 특정 블록을 변경하고자 하는 트랜잭션의 목록을 의미한다. ITL은 각 블록의 헤더에서 데이터 블록에서 변경된 트랜잭션 정보를 관리한다.

구조

  • 트랜잭션 ID (XID): 트랜잭션을 고유하게 식별하는 ID.
  • 트랜잭션 상태: 트랜잭션이 활성 상태인지, 커밋되었는지, 롤백되었는지 등의 상태 정보.
  • UNDO 세그먼트: 트랜잭션이 변경한 데이터의 이전 값을 저장하는 위치.
  • 락 정보: 트랜잭션이 잠금을 획득한 행에 대한 정보.

기능

ITL의 주요 기능은 다음과 같다.

  • 트랜잭션 관리
    ITL은 데이터 블록 내의 각 트랜잭션에 대한 정보를 통해 트랜잭션들을 관리한다.

  • 동시성 제어
    다수의 트랜잭션이 동시에 동일한 데이터 블록을 수정하려고 할 때, ITL이 어떤 트랜잭션이 데이터 블록을 수정했는지 추적하고, 이를 기반으로 충돌을 감지하고 해결한다.

  • 데이터 블록 상태 유지
    ITL은 데이터 블록의 각 행이 어떤 트랜잭션에 의해 수정되었는지 추적할 수 있는데, 이를 통해 데이터 블록의 현재 상태와 트랜잭션 완료 여부를 파악할 수 있다.

  • UNDO 관리
    ITL은 트랜잭션이 롤백될 때 필요한 undo 정보를 관리한다. 이를 통해 트랜잭션이 실패하거나 취소될 경우 데이터 블록을 원래 상태로 되돌릴 수 있다.

ITL contention

ITL슬롯은 데이터 블록마다 정해진 수만큼만 존재하기 때문에, 다수의 트랜잭션이 동시에 같은 블록을 수정하려고 할 때 슬롯이 부족할 수 있다. 이때 성능저하가 일어나는데 이를 ITL contention이라고 한다. 이를 해결하기 위해 INITRANS,MAXTRANS 파라미터를 조정하거나 트랜잭션 최적화를 해야한다.

INITRANS

테이블이나 인덱스의 초기 ITL 슬롯 수를 조절하는 파라미터

MAXTRANS

블록 당 최대 ITL 슬롯 수를 설정하는 파라미터, 현재는 db가 ITL 슬롯을 자동으로 최적화해서 관리해주기 때문에 거의 사용하지 않는다.

0개의 댓글