인프런 커뮤니티 질문&답변

dncjf64님의 프로필 이미지
dncjf64

작성한 질문수

MySQL 성능 최적화

Theory

innodb_buffer_pool_instances 기준 질문 드립니다

해결된 질문

작성

·

335

0

강의나 real mysql 책을 보면 os memory 기준으로 innodb_buffer_pool_instances 수를 조절하는것으로 나와있는데요.
좀더 검색해보니 어디든 core 수 * 2 기준으로 하는 글도 있더라구요..!! 어떤걸 기준으로 잡아야 하는지 궁금해서 질문드립니닷

 

참고한 블로그

https://owlyr.tistory.com/23

 

 

답변 1

1

여정민님의 프로필 이미지
여정민
지식공유자

안녕하세요~

질문 남겨주셔서 감사합니다.

 

InnoDB 스토리지 엔진에서 innodb_buffer_pool_instances 옵션은 인스턴스의 버퍼 풀을 여러 개로 분할하는 데 사용되잖아요. 그리고 설정은 주로 시스템의 동시성을 높이고, 버퍼 풀에 대한 스레드의 경쟁을 줄이는 목적이구요.

 

이런 점을 고려헀을 떄 innodb_buffer_pool_instances 의 수는 말씀 주신 내용처럼 다음 내용들을 고려할 수 있을 것 같아요:

  • OS Memory (운영체제 메모리): 일반적으로 innodb_buffer_pool_size의 전체 크기에 따라 innodb_buffer_pool_instances를 설정하는데요. MySQL 공식 문서는 버퍼 풀의 크기가 1GB를 초과하는 경우 인스턴스 수를 늘리는 것을 권장하고 있어요. 예를 들면 8GB의 버퍼 풀이 있다면 8개의 인스턴스를 설정하는 걸 권장하죠. 그러면 각 인스턴스는 약 1GB의 메모리를 관리하게 될거구요. innodb_buffer_pool_size 같은 경우는 OS 메모리의 80%로 설정하는 것을 권장하고 있습니다.

     

  • CPU Cores (CPU 코어 수): 서버의 CPU 코어 수를 기준으로 인스턴스 수를 설정하는 것도 도움이 될거에요. 코어 수가 많다면 더 많은 병렬성을 가질 수 있기 때문인데요. 멀티코어 시스템에서는 각 코어가 효과적으로 동시에 데이터를 처리할 수 있도록 버퍼 풀 인스턴스를 CPU 코어 수보다 많이 설정하는 것이 일반적이므로 CPU 코어가 8개인 시스템에서는 innodb_buffer_pool_instances를 16 정도로 설정해볼 수 있을거에요.

 

감사합니다.

 

 

dncjf64님의 프로필 이미지
dncjf64

작성한 질문수

질문하기