본문 바로가기
Database

[PostgreSQL] TOAST

by Nhahan 2025. 10. 26.

TOAST는 The Oversized-Attribute Storage Technique의 약자이다.

 

너무 큰 컬럼값(text, bytea, jsonb, 배열 등 가변 길이)을 보조 테이블에 저장하는 PostgreSQL의 메커니즘이다.

큰 값은 본문 테이블(Heap)에서는 포인터만 두고, 실제 데이터는 pg_toast 스키마의 TOAST 테이블에 조각(chunks)으로 보관한다.

 

어떻게 동작하는가?

 

  • 테이블에 토스트 가능한(toastable) 컬럼이 있으면 PostgreSQL이 필요할 때 자동으로 TOAST 테이블을 만든다
    • 이름: pg_toast.pg_toast_<원테이블OID>
  • 한 튜플이 너무 커지면(대략 2KB 근처로 줄임) 컬럼별 저장 전략(storage)에 따라:
    1. 압축(기본은 pglz, 최근 버전-14+이후-에선 LZ4 선택 가능)
    2. 그래도 크면 외부 저장(OUT-OF-LINE)으로 분리
    3. Heap에는 포인터만 남긴다.
  • 큰 값은 여러 조각으로 분할되어 TOAST 테이블에 저장되고, 조회 시 자동으로 detoast(복원) 됩니다.

 

 

 

댓글