본문 바로가기
database/PostgreSQL

Bulk IO 처리를 위한 IO전략과 Ring Buffer

by 문파워 2019. 5. 29.

[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() 수행으로 쿼리 성능 향상 -- 배치 프로그램 성능 개선 작업시 적절히 이용하면 좋을 것.

 

댓글