Googling/postgresql

[postgreSQL] shared_buffers (feat. 권장하는 값, Aurora-vs-RDS, ScaleUp)

날개단 2022. 6. 8. 00:50
728x90
반응형

목적

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/

 

 

반응형