DataBase

[SQL] 데이터베이스 저장 구조(Database Storage Structure)

부지런한피로 2025. 3. 7. 16:07

데이터베이스는 데이터를 효율적으로 저장하고 관리하기 위해 논리적 구조와 물리적 구조로 나뉜다.

 

1. 논리적 저장 구조 (Logical Storage Structure)

사용자가 데이터를 논리적으로 볼 수 있는 구조이며, 데이터베이스 객체들이 어떻게 조직되는지를 나타냅니다.

① 데이터베이스 (Database)

  • 하나의 데이터베이스는 여러 개의 **테이블스페이스(Tablespace)**로 구성됨.
  • 예: ORCL 데이터베이스 안에 USERS, SYSTEM 등의 테이블스페이스가 존재.

 

② 테이블스페이스 (Tablespace)

  • 데이터 파일(Data File)을 그룹화하여 관리하는 논리적 저장 공간.
  • 각 테이블스페이스는 여러 개의 데이터 파일을 가질 수 있음.
  • 주요 테이블스페이스:
    • SYSTEM / SYSAUX: 데이터 딕셔너리, 시스템 정보 저장.
    • USERS: 일반 사용자 데이터 저장.
    • UNDO: 트랜잭션 롤백을 위한 데이터 저장.
    • TEMP: 정렬 작업을 위한 임시 데이터 저장.

 

③ 세그먼트 (Segment)

  • 데이터 저장공간이 필요한 오브젝트
  • 유형:
    • 데이터 세그먼트(Data Segment): 테이블 데이터 저장.
    • 인덱스 세그먼트(Index Segment): 인덱스 정보 저장.
    • UNDO 세그먼트(Undo Segment): 트랜잭션 롤백을 위한 데이터 저장.
    • 템퍼러리 세그먼트(Temporary Segment): 정렬, 조인 시 임시로 사용.

 

④ 익스텐트 (Extent)

  • 공간을 확장하는 단위
  • 하나의 세그먼트는 여러 개의 익스텐트(Extent)로 구성됨.
  • 익스텐트는 연속된 블록(Block)들의 집합.

🔹 익스텐트 내 블록은 서로 인접한 연속된 공간이지만, 익스텐트끼리는 연속된 공간이 아니다.

오라클에서 세그먼트에 할단된 익스텐트 목록을 조회하는 방법은 아래와 같다.

select segment_type, tablespace_name, extent_id, file_id, block_id, blocks
from dba_extents
where owner = USER
and segment_name = 'MY_SEGMENT'
order by extent_id;

 

⑤ 블록 (Block)

  • 데이터베이스에서 가장 작은 저장 단위.
  • 일반적으로 4KB, 8KB 등의 크기를 가짐.
  • 하나의 블록에는 여러 개의 행(Row)이 저장됨.

🔹 DB2, SQL Server 같은 EDBMS는 블록 대신 페이지(page)라는 용어를 사용

오라클 데이터베이스의 블록 사이즈를 확인하는 방법은 아래와 같다.

show parameter block_size
--또는
select value from v$parameter where name = 'db_block_size'

 

 


 

2. 물리적 저장 구조 (Physical Storage Structure)

실제 데이터가 운영 체제의 파일 시스템 또는 스토리지에 어떻게 저장되는지를 나타냅니다.

① 데이터 파일 (Data Files)

  • 데이터를 실제로 저장하는 파일.
  • 테이블스페이스별로 하나 이상의 데이터 파일이 존재.

 

② REDO 로그 파일 (Redo Log Files)

  • 데이터 변경 사항을 기록하여 장애 발생 시 복구를 지원.
  • 최소 2개 이상의 REDO 로그 그룹을 사용하여 순환 방식으로 운영.

 

③ 제어 파일 (Control File)

  • 데이터베이스의 구조, 파일 위치, 로그 정보 등을 저장.
  • 데이터베이스 복구 및 인스턴스 실행에 필수적.

 

④ TEMP 파일 (Temporary Files)

  • 정렬, 해시 조인 등의 연산 중 임시 데이터를 저장.

 


 

3. 데이터베이스 저장 구조 요약

구분 설명 예시
데이터베이스 데이터 저장의 최상위 개념 ORCL, HRDB
테이블스페이스 데이터 파일을 그룹화하는 논리적 단위 SYSTEM, USERS
세그먼트 테이블, 인덱스 등의 저장 공간 EMPLOYEE 테이블의 데이터 세그먼트
익스텐트 연속된 블록들의 집합 여러 개의 8KB 블록이 익스텐트를 구성
블록 가장 작은 저장 단위 한 블록에 여러 개의 행(Row) 저장
데이터 파일 실제 데이터 저장 users01.dbf
REDO 로그 파일 변경 사항 기록 redo01.log, redo02.log
제어 파일 데이터베이스 구조 정보 저장 control01.ctl