개발 중 위 에러를 만났을 때 대처법🤔
해당 에러는 mysql 메모리 테이블이 증가할 수 있는 최대 크기를 초과했거나 내부 메모리 내 임시 테이블의 최대 크기를 초과한 경우 발생한다.
* 해결 방법
1. DB를 재시작해야 하는 경우
mysql.cnf 파일을 찾아(/etc/mysql/~)
max_heap_table_size = {원하는 사이즈}
tmp_table_size = {원하는 사이즈}
위의 설정값을 추가 후 DB를 재시작해주도록 하자.
mysql 8.0.~ 버전 기준 default size는 16777216이다. 만약 문제가 생겼다면 default size보다 크게 설정하도록 하자.
2. DB를 재시작하지 않아도 되는 경우
실제 운영중엔 DB를 곧바로 재시작할 수 없을 것이다..
DB를 재시작할 수 없는 경우 아래 방법으로 설정값을 바꿀 수 있다. 다만 DB가 재시작이 되었을 때 default 설정값으로 되돌아가게 되니 위의 1번 방법도 병행할 것을 추천한다.
mysql에 접속해
SHOW VARIABLES LIKE 'max_heap_table_size';
또는
SELECT @@GLOBAL.max_heap_table_size;
SHOW VARIABLES LIKE 'tmp_table_size';
또는
SELECT @@GLOBAL.tmp_table_size;
위의 명령어를 통해 현재 설정된 size를 확인하도록 하자.
SET GLOBAL max_heap_table_size = {원하는 사이즈}
SET GLOBAL tmp_table_size = {원하는 사이즈}
위의 명령어를 통해 설정값을 바꿔주도록 하자.
그 후 SHOW VARIABLES를 통해 사이즈를 확인해 보면 반영이 되어 있지 않을 것이다. 현재 연결에서 바로 반영되지 않는다.
DB에 재접속하게 되면 반영된 사이즈를 확인할 수 있다.
max_heap_table_size와 tmp_table_size의 차이점
max_heap_table_size는 내부적으로 생성된 임시 테이블을 포함해 사용자가 생성한 메모리 테이블이 증가할 수 있는 최대 크기이다.
tmp_table_size는 메모리 테이블에는 반영되지 않는 내부 메모리 내에 임시 테이블의 최대 크기이다.
실제 사이즈 제한은 max_heap_table_size와 tmp_table_size 값 중 더 적은 값으로 제한되기 때문에 두 설정값을 동일하게 하는 것이 일반적이다.
'데이터베이스 > MySQL' 카테고리의 다른 글
[MYSQL] 테이블 정의서 만들기 (1) | 2023.11.19 |
---|
댓글