MYSQL innodb_buffer_pool_size 변경 방법
- Database
- 2023. 9. 27.
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
설정을 적용하려면 mysql 서버를 재시작해야 합니다. 리눅스 기준으론 systemctl을 사용합니다.
sudo systemctl restart mysqld
재시작 후에 변경이 반영되었는지 확인합니다.
MariaDB [(none)]> show variables like 'innodb_buffer_pool_size';
킬로바이트 단위는 가독성이 좋지 않기 때문에 1024로 두 번 나누면 MB 단위로 바꿀 수 있습니다. 1024MB (1GB)로 정상 변경된 게 확인됩니다.
'Database' 카테고리의 다른 글
MSSQL WITH (NOLOCK) 사용 방법 (0) | 2023.10.10 |
---|---|
MSSQL WITH 사용 방법 (쿼리 분리) (0) | 2023.10.06 |
MSSQL GO 명령어 사용 방법 (배치 구분자) (0) | 2023.08.29 |
PostgreSQL 최대 사용 메모리 수정하는 방법 (0) | 2023.08.29 |
MSSQL 테이블 백업하는 방법 (SELECT * INTO) (0) | 2023.08.28 |