
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)에 따라:
- 압축(기본은 pglz, 최근 버전-14+이후-에선 LZ4 선택 가능)
- 그래도 크면 외부 저장(OUT-OF-LINE)으로 분리
- Heap에는 포인터만 남긴다.
- 큰 값은 여러 조각으로 분할되어 TOAST 테이블에 저장되고, 조회 시 자동으로 detoast(복원) 됩니다.
'Database' 카테고리의 다른 글
| 쿼리로 랜덤한 문자열 생성 (0) | 2023.04.19 |
|---|---|
| 중복행 지우는 쿼리 (0) | 2023.01.25 |
| unique와 nonclustered index (0) | 2022.12.13 |
| SQL SELECT문에서 @변수에 inline으로 값 할당하기 (0) | 2022.11.11 |
| CASE문으로 SQL 동적으로 업데이트 하기 (0) | 2022.11.10 |
댓글