Today
Total
KoreanEnglishFrenchGermanJapaneseSpanishChinese (Simplified)
관리 메뉴

DB & AWS Knowledge

RDS, Aurora Cluster 의 DBInstanceClassMemory 본문

AWS 및 클라우드 지식/AWS RDS, Aurora 및 관련 지식

RDS, Aurora Cluster 의 DBInstanceClassMemory

`O` 2022. 6. 15. 03:10
728x90
반응형

해당 페이지에서는 RDS, Aurora Cluster 에서 자주 사용되는 DBInstanceClassMemory 값에 대하여 다룬다.

 

해당 내용은 아래의 공식 문서를 참조하여 기재한다.

 

https://docs.aws.amazon.com/ko_kr/AmazonRDS/latest/UserGuide/USER_WorkingWithParamGroups.html#USER_FormulaVariables

 

또한 해당 글은 이전 개시글중에서 아래의 게시글을 먼저 읽고 오면 좋다.

 

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 로 잡힌다.

 

 

 

 

반응형
Comments