database/PostgreSQL
Bulk IO 처리를 위한 IO전략과 Ring Buffer
문파워
2019. 5. 29. 01:27
[PostgreSQL 9.6 성능이야기] 편,
스리슬쩍 공부한다꼬 책 보면서 요약
내용에 틀린 부분이 있을 수 있음!
문제1. Seq Scan 으로 인해 Bulk Table 의 모든 블록이 Shared Buffer로 로딩된다면?
해결1. IO전략
해결2. Ring Buffer 사용
- IO전략이란?
IO전략은 IO유형에 따라 4가지로 구분된다.
1. NORMAL (랜덤 엑세스용) -- normal 요청을 제외한 아래 3개 요청은 Ring Buffer를 이용한다.
2. BULK READ (Large Seq Scan 용)
3. BULK WRIET (대량 Write 용)
4. VACUUM
- Ring Buffer (256 KB, 32 Block)
논리적으로 원형 형태의 배열을 의미.
일정 크기의 배열을 순환 방식으로 사용하여 Seq Scan 의 위험성?으로부터 보호
- BULK READ
Share Buffer 크기의 1/4 이상인 테이블에 대한 Seq Scan 시에만 BULK READ 방식을 사용
- BULK READ시 Ring Buffer 동작 원리
.
.
.
- Ring Buffer 와 pg_prewarm() extension
pg_prewarm 익스텐션은 테이블과 인덱스를 Shared Buffer 로 로딩하는 기능을 제공한다
pg_prewarm() 수행으로 쿼리 성능 향상 -- 배치 프로그램 성능 개선 작업시 적절히 이용하면 좋을 것.