MySQL 설정 계산기
브라우저 안에서만 처리됩니다. 입력한 내용과 선택한 파일은 서버로 전송되지 않습니다. 익명 방문 통계만 집계합니다.
이 값은 일반 산식으로 낸 출발점입니다. 실제 부하로 계측하며 조정하세요.
서버 전체가 아니라 DB 에 줄 수 있는 메모리
MySQL 8.4 의 redo 용량 계산에만 쓰입니다
my.cnf 권장값
my.cnf 스니펫
[mysqld] # 전용 서버 기준 감지된 메모리의 50% (공식 자동 설정 표: RAM 1~4GB 구간) # 출처: https://dev.mysql.com/doc/refman/8.4/en/innodb-dedicated-server.html#dedicated-server-buffer-pool-size innodb_buffer_pool_size = 2G # 8.4 자동설정 산식(코어 기반) 기준 — 논리 코어 수(2) / 2 GB, 최대 16GB # 출처: https://dev.mysql.com/doc/refman/8.4/en/innodb-dedicated-server.html innodb_redo_log_capacity = 1G # 리눅스 — OS 파일시스템 캐시와 InnoDB 버퍼 풀의 이중 버퍼링을 피한다(공식 문서 근거) (재시작 필요) # 출처: https://dev.mysql.com/doc/refman/8.4/en/innodb-parameters.html#sysvar_innodb_flush_method innodb_flush_method = O_DIRECT # SSD/SAN 등 고성능 스토리지 — 공식 기본값(10000) 그대로 채택 # 출처: https://dev.mysql.com/doc/refman/8.4/en/innodb-configuring-io-capacity.html innodb_io_capacity = 10000 # innodb_io_capacity 의 2배 — 공식 기본값 산식(Default Value: 2 * innodb_io_capacity) # 출처: https://dev.mysql.com/doc/refman/8.4/en/innodb-parameters.html#sysvar_innodb_io_capacity_max innodb_io_capacity_max = 20000 # 공식 기본값(151) — RAM/워크로드 연동 산식 없음 # 출처: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_connections max_connections = 151 # 공식 기본값(16MB) — GROUP BY 등이 많으면 늘리라는 정성적 권고뿐 숫자 산식 없음 # 출처: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_tmp_table_size tmp_table_size = 16M # 공식 기본값(16MB) — tmp_table_size 와 함께 MEMORY 임시 테이블 상한을 결정(숫자 산식 없음) # 출처: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_max_heap_table_size max_heap_table_size = 16M # 공식 기본값(4000) — Opened_tables 상태값을 보고 늘리라는 정성적 권고뿐 숫자 산식 없음 # 출처: https://dev.mysql.com/doc/refman/8.4/en/server-system-variables.html#sysvar_table_open_cache table_open_cache = 4000
| 파라미터 | 권장값 | 근거 | |
|---|---|---|---|
| innodb_buffer_pool_size | 2G | 전용 서버 기준 감지된 메모리의 50% (공식 자동 설정 표: RAM 1~4GB 구간) 출처 | |
| innodb_redo_log_capacity | 1G | 8.4 자동설정 산식(코어 기반) 기준 — 논리 코어 수(2) / 2 GB, 최대 16GB 출처 | |
| innodb_flush_method | O_DIRECT | 리눅스 — OS 파일시스템 캐시와 InnoDB 버퍼 풀의 이중 버퍼링을 피한다(공식 문서 근거) 출처 | 재시작 |
| innodb_io_capacity | 10000 | SSD/SAN 등 고성능 스토리지 — 공식 기본값(10000) 그대로 채택 출처 | |
| innodb_io_capacity_max | 20000 | innodb_io_capacity 의 2배 — 공식 기본값 산식(Default Value: 2 * innodb_io_capacity) 출처 | |
| max_connections | 151 | 공식 기본값(151) — RAM/워크로드 연동 산식 없음 출처 | |
| tmp_table_size | 16M | 공식 기본값(16MB) — GROUP BY 등이 많으면 늘리라는 정성적 권고뿐 숫자 산식 없음 출처 | |
| max_heap_table_size | 16M | 공식 기본값(16MB) — tmp_table_size 와 함께 MEMORY 임시 테이블 상한을 결정(숫자 산식 없음) 출처 | |
| table_open_cache | 4000 | 공식 기본값(4000) — Opened_tables 상태값을 보고 늘리라는 정성적 권고뿐 숫자 산식 없음 출처 |
사용법
- 서버 사양(DB에 줄 메모리·코어·스토리지)과 워크로드를 고릅니다.
- 권장값이 즉시 계산됩니다 — 스니펫을 복사해 my.cnf의 [mysqld] 섹션에 붙여넣으세요.
- "재시작" 표시가 있는 값은 SET GLOBAL이 아니라 서버 재시작이 필요합니다.
자주 묻는 질문
이 값을 그대로 쓰면 되나요?
출발점으로 쓰세요. 산식은 MySQL 공식 문서의 권장 서술을 따르지만, 실제 쿼리 패턴과 데이터 크기는 서버마다 다릅니다. 적용 후 계측하며 조정하세요.
innodb_buffer_pool_size는 왜 메모리 전부가 아닌가요?
MySQL 공식 문서는 전용 서버 기준 50~75%를 권장합니다. 나머지는 커넥션별 버퍼, 임시 테이블, OS가 씁니다. 여기서는 그 범위 안의 값을 채택하고 근거에 명시합니다.
RDS/Cloud SQL 같은 관리형에도 쓸 수 있나요?
관리형 서비스는 파라미터 그룹으로만 바꿀 수 있고 일부 값은 제공사가 관리합니다. 표의 값을 참고하되 적용은 각 서비스의 파라미터 설정 화면에서 하세요.
느린 쿼리는 설정만으로 해결되나요?
아니요. 개별 쿼리 병목은 실행계획이 답입니다. 실행계획 분석 도구에 EXPLAIN FORMAT=JSON 출력을 붙여넣어 보세요.