본문 바로가기

데이터베이스

[데이터베이스] 오라클 물리 저장소의 핵심: Control File부터 데이터 블록 체인화 (2)

Oracle 데이터 블록 구조와 세그먼트 관리

오라클은 대용량 데이터 처리 및 열/행 구조에 따라 효율성을 높이기 위해 아래와 같은 방식으로 저장합니다.

👉 테이블 생성 시 데이터 저장 구조
테이블 생성 시 데이터를 저장하기 위한 세그먼트(Segment) 생성하며, 테이블 스페이스는 여러 세그먼트를 포함됩니다.


👉 데이터 저장 방식
테이블은 행(Row)으로 구성되며, 행은 데이터베이스 블록에 저장합니다.

행 조각(Row Piece): 특정 상황에서 하나의 행이 여러 블록에 나뉘어 저장됩니다.

👉 조각 저장 위치
같은 블록 내부에서 연결되거나(블록 내 체인화) 다중 블록 간에 저장될 수 있습니다.


 

데이터 베이스 블록을 살펴보면 크게 블록 헤더, 사용 가능 영역(Free Space), 행 데이터 영역으로 나뉩니다.


👉 블록 헤더

블록 헤더에는 세그먼트 유형(테이블이나 인덱스 등), 데이터 블록 주소,테이블 디렉토리, 행 디렉토리, 블록의 행을 수정할 때 사용되는 각각 23바이트 정도의 트랜잭션 슬롯이 포함됩니다.


👉 행 데이터
블록에 있는 행의 실제 데이터, 행 데이터 공간은 맨 아래부터 위쪽으로 확장


👉 사용 가능 영역

블록 중앙에서 상단의 헤더와 하단의 행 데이터가 유연하게 늘어날 수 있도록 돕는 완충 공간입니다. 이 영역은 값이 큰 데이터로 갱신되어 행의 크기가 커질 때, 새로운 행 삽입으로 인해 행 디렉토리 슬롯이 추가될 때, 그리고 동시 작업 증가로 더 많은 트랜잭션 슬롯이 필요할 때 양방향으로 확장되며 공간을 동적으로 할당합니다.