Temporary files은 언제 사용하는가?
work_mem의 크기를 넘어서면 temporary file을 사용
temp_buffers의 크기를 넘어서면 temporary file을 사용
work_mem이란?
configuration parameter로
sort or hash table과 같은 query operation이 진행될 때 사용할 수 있는 최대 memory 영역을 지정할 때 사용
여러 세션에서 수행되는 query에서 동시에 work_mem의 최대치까지 할당받아 쓸 수 있으므로 총 사용된 메모리양은 work_mem값보다 커질 수 있음.
sort 연산
ORDER BY, DISTINCT, MERGE JOINS
hash table
HASH JOIN, HASH-BASED AGGREGATION, IN절 subquery에서 hash 기반 처리 시 사용
temp_buffers란?
configuration parameter로
각 DB 세션마다 temporary buffers에 사용되는 최대 메모리양을 설정.
temporary tables을 access하는 데만 사용되는 session local buffer임.
temporary file 생성 위치 및 구조
$PGDATA/base/pg_tmp 하위 디렉토리에 생성됨.
pgsql_tmp + file을 생성한 PID.{몇번째 temport file인지}
예시) 8903 pid에서 생성한 5번째 tempoary file
$ ls -la $PGDATA/base/pgsql_tmp*
-rw------- 1 postgres postgres 10240000 12 4 14:18 pgsql_tmp8903.5'PostgreSQL' 카테고리의 다른 글
| JIT(Just-in-Time Compilation) (0) | 2025.07.07 |
|---|---|
| PREPARE statement (1) | 2025.07.07 |
| 23. PostgreSQL - planner의 cost 계산 (1) | 2024.12.29 |
| 22. PostgreSQL - query processing (1) | 2024.12.29 |
| 21.PostgreSQL - WAL(Write Ahead Log) (4) | 2024.12.28 |