본문 바로가기
SQL Professional

[독학! SQLP] 데이터베이스 구조

by 개발자의 2025. 8. 21.

테이블 스페이스

  • 세그먼트를 저장하는 논리적 공간
  • 하나 이상의 데이터 파일(Datafile)로 구성

데이터 파일

  • 실제 OS 레벨 물리 파일

세그먼트

  • 특정 DB 객체(테이블, 인덱스, 파티션, LOB)에 할당된 익스텐트들의 집합
  • 객체 1개 = 세그먼트 1개 원칙
  • 테이블 생성시 
    • 테이블 세그먼트는 항상 생성
    • 인덱스 세그먼트는 PK/UNIQUE 제약조건, 명시적 인덱스 생성이 있을때 생성
    • 파티션 세그먼트는 파티션 정의 시 생성
      • 테이블 또는 인덱스가 파티션 구조라면 각 파티션이 하나의 세그먼트가 된다.
    • LOB 세그먼트는 LOB 컬럼 존재 시 생성
  • 세그먼트 공간이 부족해지면, 테이블 스페이스로부터 익스텐트를 추가로 할당.
  • 세그먼트에 할당된 모든 익스텐트가 같은 데이터 파일에 위치하지 않을수 있음. 
    • 하나의 테이블 스페이스를 여러 데이터 파일로 구성하면, 파일 경합을 줄이기 위해, DBMS가 데이터를 가능한 여러 데이터 파일로 분산해서 저장.
-- ① 기본 테이블
CREATE TABLE EMP (
  EMPNO NUMBER PRIMARY KEY,
  ENAME VARCHAR2(20)
);
-- 생성 세그먼트 : EMP(테이블), EMP_PK(인덱스)

-- ② LOB 추가
CREATE TABLE EMP_DOC (
  EMPNO NUMBER PRIMARY KEY,
  DOC CLOB
);
-- 생성 세그먼트 : EMP_DOC(테이블), EMP_DOC_PK(인덱스), EMP_DOC(DOC_LOB 세그먼트)

-- ③ 파티션 테이블
CREATE TABLE SALES (
  SALE_ID NUMBER PRIMARY KEY,
  SALE_DATE DATE,
  AMOUNT NUMBER
)
PARTITION BY RANGE (SALE_DATE) (
  PARTITION P2024 VALUES LESS THAN (DATE '2025-01-01'),
  PARTITION P2025 VALUES LESS THAN (DATE '2026-01-01')
);
-- 생성 세그먼트 : SALES_P2024, SALES_P2025 (파티션별 세그먼트), SALES_PK 인덱스 세그먼트

익스텐트

    • 여러 개의 블록 묶음 (연속된 블록들의 집합)
    • 한 번에 할당/반납되는 단위 → 공간 관리 최소 단위
    • 공간을 확장하는 단위 -> 데이터를 입력하다가 공간(세그먼트)이 부족해지면 객체가 속한 테이블 스페이스로 부터 익스텐트를 추가로 할당 받음.
    • 하나의 익스텐트는 하나의 테이블(객체, 세그먼트)이 독점 -> 하나의 익스텐트에 저장된 모든 블록은 같은 테이블 블록임
      • SQL Server는 소규모의 객체일때만 여러 객체가 한 익스텐트를 공유함(Mixed Extent)
    • 익스텐트 내의 블록은 연속된 공간이지만, 익스텐트 끼리는 연속된 공간이 아님.
  •  

블록( = 페이지, DBMS에 따라)

  • DB 저장의 최소 단위
  • 실제 데이터가 기록되는 가장 작은 단위
  • 하나의 블록은 하나의 테이블(객체, 세그먼트)이 독점 -> 하나의 블록에 저장된 레코드는 모두 같은 테이블 레코드다
    • 다중 테이블 클러스터일때는 한 블록에 여러 테이블 레코드가 같이 저장될 수 있음.

 

'SQL Professional' 카테고리의 다른 글

[독학! SQLP] SQLP 낙방 후기  (1) 2025.08.25
[독학! SQLP] 계층 쿼리  (0) 2025.08.20
[독학! SQLP] 서브쿼리  (3) 2025.08.20
[독학! SQLP] 트랜잭션  (1) 2025.08.20
[독학! SQLP] SQL 조인!  (6) 2025.08.20