PostgreSQL에서 SELECT 문을 작성할 때 조회하는 컬럼 수가 성능에 영향을 미칠 수 있습니다. 이번 포스팅에서는 컬럼 수가 많을 때 성능에 미치는 영향을 살펴보고, 이를 최적화하는 방법을 소개합니다.
컬럼 수 증가가 성능에 미치는 영향
1. 디스크 I/O 증가
- 컬럼이 많아질수록 디스크에서 읽어야 할 데이터 양이 증가합니다.
- 데이터가 캐시에 없다면 디스크 I/O가 증가하여 성능이 저하될 수 있습니다.
2. 네트워크 대역폭 사용 증가
- 조회 결과가 클수록 클라이언트로 전송되는 데이터도 많아집니다.
- 네트워크 비용이 증가하며 애플리케이션 응답 시간이 늘어날 수 있습니다.
3. 워크 메모리(Work Memory) 사용 증가
- 정렬(SORT)이나 해시 조인(HASH JOIN) 시, 컬럼 수가 많으면 더 많은 메모리를 사용합니다.
work_mem을 초과하면 디스크에 임시 테이블이 생성되어 성능이 저하됩니다.
4. 인덱스 최적화 방해
SELECT *는 인덱스만으로 처리 가능한 쿼리도 테이블 전체 스캔으로 바뀔 수 있습니다.- 필요한 컬럼만 조회하지 않으면 인덱스 최적화의 이점을 누릴 수 없습니다.
성능 최적화 방법
- 불필요한 컬럼 조회 최소화
- 필요한 컬럼만 명시적으로
SELECT합니다.
- 필요한 컬럼만 명시적으로
- 커버링 인덱스 활용
INDEX ONLY SCAN을 통해 인덱스에서 데이터를 바로 가져올 수 있도록 구성합니다.
- TOAST 압축 컬럼 주의
- 길이가 긴 문자열 컬럼은
TOAST압축을 통해 저장되므로 필요하지 않다면 제외합니다.
- 길이가 긴 문자열 컬럼은
- 네트워크 전송 최적화
- 애플리케이션에서
FETCH크기를 조정하여 네트워크 트래픽을 줄입니다.
- 애플리케이션에서
반응형
'개발 (Development) > PostgreSQL' 카테고리의 다른 글
| [PostgreSQL] WAL(Write-Ahead Logging) 로그 관리 가이드 (0) | 2025.02.17 |
|---|---|
| [PostgreSQL] 데이터베이스를 물리적으로 다른 서버에 있는 동일 데이터베이스로 옮기는 방법 (0) | 2025.02.17 |
| [PostgreSQL] ASC 인덱스가 있는데 DESC 인덱스를 추가해도 될까? (0) | 2025.02.16 |
| [PostgreSQL] 쿼리 성능 최적화 과정 (0) | 2025.02.16 |
| [PostgreSQL] 특정 데이터베이스에 접속하기 (1) | 2025.02.16 |