MySQL에서 패킷(Packet) 사이즈를 지정하는 방법에 대하여 알아보도록 하겠습니다. 또한 "Packet larger than max_allowed_packet are not allowed" 오류가 났을 때 해결하는 방법도 포함되어 있습니다.
MySQL 5.7 Version max_allowed_packet 확인 및 설정
1. max_allowed_packet 이란?
MySQL 서버(Server)와 클라이언트(Client) 사이에서 주고받는 패킷(SQL 구문 또는 Row)의 사이즈를 제한하는 역할을 하는 값입니다. 그리고 API 사용 시에는 보낼 수 있는 파라미터의 최대 사이즈 값입니다.
2. 기본값과 최대값
- 기본 : 4M
- 최대(MAX) : 1000M(1G)
3. max_allowed_packet 사이즈 확인
-- max_allowed_packet 사이즈 확인 방법
SHOW VARIABLES WHERE variable_name = 'max_allowed_packet';
-- 'max'로 시작하는 모든 값들의 사이즈 확인 (LIKE 연산자 사용)
SHOW VARIABLES WHERE variable_name like 'max%';
4. max_allowed_packet 사이즈 설정
패킷 사이즈는 max_allowed_packet 설정을 통하여 최대 1G까지 늘릴 수 있습니다. BLOB(대용량) 컬럼이나 긴 문자열(Long Query)을 사용하여 패킷 사이즈를 변경할 수 있습니다. 하지만, 현재 사용 중인 서버 및 클라이언트의 메모리를 확인 후 메모리 부족 현상이 일어나지 않도록 주의해야 합니다.
1) my.ini 파일을 통한 max_allowed_packet 사이즈 설정
- 서버상의 MySQL 환경 파일 열기 - my.ini파일
※ 경로(Path) - C:\ProgramData\MySQL\MySQL Server 5.7\my.ini 대부분 이 경로가 기본으로 지정되어 있는데, 사용자가 경로를 직접 설정한 분들께서는 해당 설정 경로의 my.ini 파일을 열어주시기 바랍니다.
(C:\ProgramData 폴더는 숨겨져 있으므로 보기에서 숨긴 항목 보기를 클릭하면 보실 수 있습니다.) - Text 찾기(Ctrl + F)에서 max_allowed_packet을 검색
- 기본 default값이 4M > 32M (적당한 용량을 선택하여 변경)
- 서비스에서 MySQL 재실행
※ 재실행을 하지 않으면 해당 패킷 사이즈가 적용되지 않습니다.
2) MySQL 명령어를 통한 max_allowed_packet 사이즈 설정
-- GLOBAL 명령을 이용하여 32M(=33554432)로 변경, 33554432 값을 직접 입력하여도 무방
SET GLOBAL max_allowed_packet = 32*1024*1024;
-- 또는 SESSION 명령을 이용하여 변경
SET SESSION max_allowed_packet = 33554432;
3) 패킷 사이즈가 부족한 경우 발생하는 오류 및 해결 방법
패킷 사이즈가 부족한 경우 발생하는 오류로는 "Packets larger than max_allowed_packet are not allowed"가 발생할 수 있으며, 쿼리 길이가 Packet에 설정한 최대 길이 제한보다 큰 경우 발생하는 오류입니다. 이때 위 방법으로 max_allowed_packet을 적절하게 조절하여 해당 오류를 해결할 수 있습니다.
'DataBase > MySQL' 카테고리의 다른 글
MySQL 페이징 처리 - LIMIT, OFFSET 사용 방법 (0) | 2022.12.14 |
---|---|
MySQL 날짜, 시간 타입 (DATE, DATETIME, TIME, TIMESTAMP) (0) | 2022.10.24 |
MySQL 테이블 존재 여부 확인 방법 (0) | 2022.10.11 |
MySQL SELECT문 정리 (DB 데이터 조회) (0) | 2022.10.04 |
MySQL DROP문 정리 (DB와 TABLE 삭제) (0) | 2022.10.03 |
댓글