MYSQL innodb_buffer_pool_size 변경 방법

MYSQL 사용 중 쿼리 성능이 시스템 리소스 대비 나오지 않는다면 innodb_buffer_pool_size 문제일 수 있습니다. innodb_buffer_pool_size는 MariaDB, MYSQL에서 테이블의 데이터와 인덱스를 캐시하기 위한 버퍼 풀의 크기를 지정하기 때문에 이 값이 필요한 수준 대비 낮으면 성능이 떨어질 수 있는 것입니다. 

innodb_buffer_pool_size

버퍼 풀은 데이터베이스 서버의 성능에 큰 영향을 미칠 수 있습니다. 버퍼 풀이 크면 데이터베이스의 많은 데이터와 인덱스가 메모리에 적재될 수 있어 디스크 I/O가 줄고 데이터 접근 속도가 빨라집니다. 버퍼 풀이 너무 작으면 데이터와 인덱스의 일부만 메모리에 적재되어 더 많은 디스크 I/O가 발생하고 성능이 저하될 수 있습니다.

 

보통 innodb_buffer_pool_size의 기본값은 131MB입니다. 하지만 권장사항은 전체 시스템 메모리의 50~80% 수준이기 때문에 늘려줄 필요가 있습니다. 예를 들어, 서버 메모리가 16GB이면 다른 프로세스의 메모리 사용량에 따라 다르겠지만 최소 4GB 이상은 할당해도 괜찮지 않나 싶습니다.

 

innodb_buffer_pool_size 변경

우선 현재 mysql의 innodb_buffer_pool_size 값을 확인하려면 아래의 명령을 수행합니다.

show variables like 'innodb_buffer_pool_size';

 

예시)

value의 단위는 킬로바이트(k)입니다. 이 경우엔 131MB입니다.

MariaDB [(none)]> show variables like 'innodb_buffer_pool_size';
+-------------------------+-----------+
| Variable_name           | Value     |
+-------------------------+-----------+
| innodb_buffer_pool_size | 134217728 |
+-------------------------+-----------+

 

리눅스는 my.cnf, 윈도우는 my.ini 설정 파일에서 innodb_buffer_pool_size 값을 변경합니다.

 

파일을 열고 [mysqld] 섹션 아래에 라인을 추가합니다.

 

예시)

[mysqld]
innodb_buffer_pool_size=1G

 

innodb buffer pool size 설정

 

설정을 적용하려면 mysql 서버를 재시작해야 합니다. 리눅스 기준으론 systemctl을 사용합니다.

sudo systemctl restart mysqld

 

재시작 후에 변경이 반영되었는지 확인합니다.

MariaDB [(none)]> show variables like 'innodb_buffer_pool_size';

 

킬로바이트 단위는 가독성이 좋지 않기 때문에 1024로 두 번 나누면 MB 단위로 바꿀 수 있습니다. 1024MB (1GB)로 정상 변경된 게 확인됩니다.

 

변경된 값 확인

반응형

댓글

Designed by JB FACTORY