해결된 질문
작성
·
306
0
강의나 real mysql 책을 보면 os memory 기준으로 innodb_buffer_pool_instances 수를 조절하는것으로 나와있는데요.
좀더 검색해보니 어디든 core 수 * 2 기준으로 하는 글도 있더라구요..!! 어떤걸 기준으로 잡아야 하는지 궁금해서 질문드립니닷
참고한 블로그
답변 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 정도로 설정해볼 수 있을거에요.
감사합니다.