트랜잭션 ID
- 레코드를 작성한 트랜잭션 ID
- 레코드를 삭제한 트랜잭션 ID(삭제되지 않은 경우 0으로 설정됨)
시스템이 레코드를 업데이트할 때에는 원래 레코드를 삭제하고 새 레코드를 삽입하며 행 ID를 유지합니다.
시스템은 디스크에 있는 레코드를 업데이트하지 않기 때문에 데이터 무결성이 유지되고(한 번 쓰기) 롤백 및 복구 조작이 간소화 및 가속화됩니다.
사용자가 쿼리(또는 백업 조작)를 실행하는 경우 시스템은 이 트랜잭션이 시작되기 전에 작성되었지만 삭제되지 않은 모든 레코드에 쿼리가 액세스하도록 허용합니다. xid 값이 순차이므로 시스템은 이를 지원하기 위해 작성 xid와 삭제 xid 값을 비교합니다.
트랜잭션이 시작되면 시스템이 다른 모든 활성 트랜잭션의 숨김 목록을 생성합니다(따라서 더 낮은 xid 값을 가지게 됨). 트랜잭션은 일치하는 작성 xid 값이 있는 모든 레코드를 무시하고 일치하는 삭제 xid 값이 있는 모든 레코드를 포함시킵니다.
xid는 48비트로 표현되는 8바이트 정수값입니다. 새 설치에서 초기 xid 값은 1,024입니다. 시스템은 다음으로 사용 가능한 xid 값을 /nz/data/xid 파일에 저장합니다.
xid 크기는 100조 개의 트랜잭션 ID 이상을 감안하여 설계되었으며 이 크기는 밀리초당 트랜잭션 1개의 비율로 4,000년 넘게 사용할 수 있는 수준입니다. 실제로는 거래 ID가 더 느린 속도로 생성될 가능성이 높으며 소진되는 데 더 오랜 시간이 걸립니다.