DB & AWS Knowledge
RDS, Aurora Cluster 의 DBInstanceClassMemory 본문
RDS, Aurora Cluster 의 DBInstanceClassMemory
`O` 2022. 6. 15. 03:10해당 페이지에서는 RDS, Aurora Cluster 에서 자주 사용되는 DBInstanceClassMemory 값에 대하여 다룬다.
해당 내용은 아래의 공식 문서를 참조하여 기재한다.
또한 해당 글은 이전 개시글중에서 아래의 게시글을 먼저 읽고 오면 좋다.
2022.05.18 - [AWS 및 클라우드 지식/AWS 지식] - RDS, Aurora 파라미터 그룹 개요 (Parameter group)
DBInstanceClassMemory 의 뜻 및 사용 의의
DBInstanceClassMemory 는 우리가 사용하는 인스턴스 class 에서 사용 할 수 있는 메모리 영역 값이다.
RDS 및 Aurora Cluster 에서는 일부 파라미터들에 대하여 기본값을 적용할 때,
MySQL 의 innodb_buffer_pool_size 와 같은 메모리 할당값은 특정 수치를 반영하지 않고 {DBInstanceClassMemory*3/4} 등의 산술식을 반영하여 사용자가 사용하는 인스턴스 class 에 적절한 수치가 반영 될 수 있도록 한다.
(물론 해당 산술식은 사용자가 원하면 파라미터 그룹에서 지정된 수치로 바꿀 수 있다.)
위의 DBInstanceClassMemory 를 통한 산술식 반영 방법은 위의 메모리 할당 영역이외에 max_connection 등의 여러 파라미터에서도 동일하게 적용된다.
RDS, Aurora Cluster 에서의 DBInstanceClassMemory 반영 영역
RDS 운영시에는 산출식에 따라 예상 할 수 있는 값에 비하여 실제로 이보다 적게 반영된 값을 확인 할 때가 있다. 예를 들어, 총 메모리 크기가 4GiB 인 db.t3.medium 에서의 RDS MySQL innodb_buffer_pool_size 는 {DBInstanceClassMemory*3/4} 산출식에 따라 3GiB 가 반영 될 거라고 예상 한다.
하지만, 실제 인스턴스에서 이 값을 확인하면 3GiB 보다 현저히 낮은 값이 반영 (1.5~2 GiB) 되었음을 확인 할 수 있다.
왜 그럴까? 이는 RDS 서비스의 내부 구조와 연관이 되어 있기 때문이다.
RDS 및 Aurora Cluster 는 단순히 우리가 온프레미스에서 흔히 사용하는 OS 에 DB 만 설치가 되어있는 구조가 아니다. 그에 따라 해당 인스턴스의 메모리에서 일부를 필수 운영 영역에 쓰는데 할당 하기에 DB 가 사용 할 수 있는 실제 메모리 영역은 줄어들게 된다. 그렇기 때문에 실제로 DB 가 사용 해야 할 메모리 크기영역을 산출 하고 이에 맞는 인스턴스 class 를 선택시에는 산출한 크기 이상의 메모리를 쓸 수 있는 인스턴스 class 를 선택하거나 파라미터 그룹에서 직접 산출한 값을 적용하는게 좋다.
단, Aurora Cluster 는 RDS 구조와 다르게 설계되어 전체 메모리가 DBInstanceClassMemory 로 잡힌다.
'AWS 및 클라우드 지식 > AWS RDS, Aurora 및 관련 지식' 카테고리의 다른 글
RDS, Aurora Cluster 의 CloudWatch 와 Enhanced Monitoring 간의 측정 값 차이 (0) | 2022.10.12 |
---|---|
Aurora Cluster 간 replication 연결 (0) | 2022.06.24 |
AWS CLI 를 통한 CloudWatch metric 수집 (0) | 2022.06.14 |
AWS CLI 개요 및 의의 (0) | 2022.06.10 |
RDS, Aurora PostgreSQL 의 replication 사용 (0) | 2022.06.09 |