본문 바로가기
DATABASE/Oracle

[Oracle] 저장 구조 - Tablespace, Segments, Extents, Data Block, OS Block, Data File

by DANEW 2023. 7. 29.

Intro

안녕하세요 초보 DBA 다뉴입니다.

 

요번에 Oracle - Tablespace 관련 업무를 하다가 Data 구조에 대해서 궁금하게 되었습니다.

그래서 이것저것 공부하고 찾아보게 되어 간략하게 기본 구조에 대해서 남겨볼까 합니다.

 

논리적인 구조로는 Data Blocks, Extents, Segments, Tablespaces 

물리적인 구조로는 OS Blocks, Data Files 

이렇게 구성되어 있습니다. 한번 알아보도록 하죠.


오라클의 논리적 구조

알아두기

논리적 구조는 실제로 저장되는 공간이 아닌 공간의 나눔과 연속성에 대한 구분입니다.

구조의 순서로는 Data Block → Extents → Segments → Tablespaces 로 되어있습니다.

데이터 블록 (Data block)

  • 논리적 단위 중 최소 단위, 데이터의 I/O의 최소 단위
  • 하나 이상의 OS Block으로 구성
  • OS Block Size를 고려하여(배수) 데이터 블록의 크기 지정
  • 논리 블록(Logical block), 페이지(Page) 등으로 불림
  • Standard Block Size : 2KB, 4KB, 8KB, 16KB, 32KB

익스텐트 (Extents)

  • 연속적인 데이터 블록의 집합
  • Table 생성 시 익스텐트 안에 몇 개의 블록으로 공간 할당
  • 익스텐트 안에 공간이 모두 사용될 경우 다른 익스텐트를 할당받아 연속적으로 데이터 저장

세그먼트 (Segments)

  • 하나 이상의 익스텐트로 구성
  • 세그먼트는 물리적으로 여러 데이터 파일을 가질 수 있음
  • Table : 데이터 세그먼트(Data Segments) / Index : 인덱스 세그먼트(Index Segments)
  • Table과 Index는 물리적으로 다른 공간에 저장

테이블스페이스 (Tablespace)

  • 하나 이상의 세그먼트로 구성
  • 세그먼트는 하나의 테이블스페이스에 속함. 즉, 테이블/인덱스는 각 테이블스페이스에 속함
  • 테이블스페이스가 모여 데이터베이스를 구성함


오라클의 물리적, 논리적 저장 구조

저장구조를 정리하자면, 이런 도식이 생성되는데요.

 

다시 정리하자면,

 

Oracle의 데이터는 Data Block에 저장됩니다.

Data Block은 실질적으로 데이터가 저장되는 Data File의 OS Block의 크기 단위로 I/O가 되어야 하기때문에 Data Block은 OS Block의 배수 만큼의 크기를 가지는 것을 권장합니다.

 

이런 Data Block들의 연속적인 집합을 Extent라 합니다.

기본 설정마다 다를 수 있으나 기본적으로 초기 Extent의 크기는 5 Data Block 이며, 할당 된 Extent의 공간이 꽉 찰 경우에만 추가 Extent를 할당합니다. 이때 크기는 기존 Extent보다 크거나 같습니다.

또한, 물리적 저장공간인 Data File 하나에 여러 Extent를 포함하고 있습니다.

 

Segment는 한개 이상의 Extent가 모여 이루어져 있으며, 하나의 Table 및 Index는 하나의 Segment에 저장됩니다.

하나의 Segment에는 여러 Extent를 가지고 있는 만큼 한개 이상의 Data File을 가지고 있을 수 있는데요. 이때에는 해당 Data File들이 동일한 Tablespace에 속해 있어야 합니다.

 

즉, 하나의 Tablespace는 논리적으로는 여러 Segment, 물리적으로는 여러 Data File을 가질 수 있습니다.

Tablespace와 Segment, Data File의 관계를 봤을 때, 하나의 Table 및 Index는 물리적으로 여러 Data File에 속할 수 있으며, 논리적으로는 하나의 Tablespace에 속하게 됩니다.


Outro

오라클의 논리적, 물리적 저장구조에 대해서 한번 간단히 알아봤습니다.

하나하나 동작구조에 대해서는 추가로 공부하여 업로드 하도록하겠습니다.

 

감사합니다.

반응형