목적
DISK IO 를 최소화함으로써 IO 성능을 향상시킵니다.
1) 매우 큰 (수십, 수백 GB) 버퍼를 빠르게 액세스해야 합니다.
2) 많은 사용자가 동시에 접근할 때 경합을 최소화해야 합니다.
3) 자주 사용되는 블록은 최대한 오랫동안 버퍼 내에 있어야 합니다.
권장하는 값
공식문서의 내용을 의역해보았습니다.
PostgreSQL 서버의 권장 shared_buffers 값은 시스템 메모리의 25%입니다.
PostgreSQL 서버는 운영 체제 캐시에 의존합니다.
그래서 RAM의 40% 이상 할당하지 않는 것이 좋습니다.
토픽1. shared_buffers DB 파라미터 기본값이
Aurora PostgreSQL > RDS PostgreSQL인 이유는 무엇입니까?
위 [권장하는 값] 내용을 바탕으로
RDS DB 인스턴스의 shared_buffers 기본 값은 25%로 설정됩니다.
하지만 Aurora DB 인스턴스의 shared_buffers 기본 값은 75%로 설정됩니다.
이는 Aurora가 파일 시스템 캐시를 활용하지 않기 때문입니다.
Aurora의 shared_buffers 기본 값은 75%보다 더 작을 경우 성능이 저하될수 있습니다.
토픽2. Aurora PostgreSQL 의 기본값은 정말 75%인가요?
SHOW shared_buffers;
실제로, 128GB Aurora DB 기준으로 66%, 16GB Aurora DB 기준으로 62% 할당되는 것을 확인할 수 있었습니다.
정확하게 75%는 아니었습니다.
{{ 계산식 }}
256GB Aurora DB => 22156491 : 8kB = 177251928 : 1kB => {(177251928 / (256 * 1024 * 1024)) * 100} => 66%
128GB Aurora DB => 11035447 : 8kB = 88283576 : 1kB => {(88283576 / (128 * 1024 * 1024)) * 100} => 66%
016GB Aurora DB => 10544928 : 1kB => {(10544928 / 16777216) * 100} => 62%
토픽3. Aurora PostgreSQL 의 ScaleUp시 shared_buffers도 같이 ScaleUp 되나요?
디폴트 설정을 그대로 두었다면 같이 올라가며, 식으로 값을 계산해 따라 ScaleUp됩니다.
값을 지정하는 경우에는 변경이 ScaleUp에 따라 변경이 필요합니다.
출처1 : https://vdocuments.mx/postgresql-96-.html (45page)
출처2 : https://www.postgresql.org/docs/11/runtime-config-resource.html
출처3 : https://aws.amazon.com/ko/premiumsupport/knowledge-center/rds-aurora-postgresql-shared-buffers/
'Googling > postgresql' 카테고리의 다른 글
[postgreSQL] vacuum 총정리 (feat. dead_tuple, bloat, autovacuum) (0) | 2022.06.13 |
---|---|
[postgreSQL] 써보니 유용한 쿼리 (feat. 메타 정보 쿼리) (0) | 2022.02.22 |
[RDBMS] PostgreSQL vs MySQL 차이 (fear. 버전을 막론하고) (4) | 2021.08.07 |
[postgreSQL] 카운트 쿼리 쓸 때 알아두면 좋은 것 (null, limit) (0) | 2021.08.02 |
[postgreSQL] 재귀쿼리 만들기 (Recursive) ( + 매우 주의해야하는 케이스 : 무한루프) (2) | 2021.08.01 |