본문 바로가기

와사비크래커 IT Tip/DB

MySQL / MariaDB 쿼리 패킷 사이즈 변경

728x90
반응형
내용
mysql의 max_allowed_packet 설정값은 mysql이 클라이언트와 통신할 때 핸들링 할 수 있는 데이터의 양을 의미합니다. 디폴트로는 1mb로 설정되어 있음

mysql 3.23버젼에선 이 값을 16mb까지 설정할 수 있고 4.0.1 이상부터는 1기가까지 가능

대량의 데이터를 mysql과 주고받을땐 connect timeout 시간이나 (혹시 server-side script를 이용한다면) 스크립트의 timeout시간도 확인해봐야 하며, timeout의 값이 충분히 설정되어 있다면 다음으로 max_allowed_packet의 값을 의심해봐야 함

이 값은 mysql에 입력하는 데이터의 양 뿐만 아니라,
리턴되는 데이터의 양과도 관련이 있습니다. 따라서 대량의 데이터를 리턴받아야 하는 상황 (blob data type같은..)이 요구될때도 설정값을 살펴봐야 함

mysql.com에서는 이 값을 적당히 늘려주는 것이 더 좋다고(안전하다고) 밝히고 있음

mysql은 지정된 값만큼 항상 memory를 가지고 있는 것이 아니라, 필요한 양 만큼의 메모리만 (단, max_allowed_packet의 값에 제한받습니다.) 사용


에러 로그
Packet for query is too large (1720261 > 1048576).
You can change this value on the server by setting the max_allowed_packet' variable.
Packet for query is too large (1296932 > 1048576).


처리방법

실행중 변경해 주는 방법

show variables;
SET GLOBAL max_allowed_packet = 1024 * 1024 * 16;
SET SESSION max_allowed_packet = 1024 * 1024 * 16;


mysql 실행할때 변경해 주는 방법

shell> mysqld --max_allowed_packet=16M


mysql 설정파일에서 변경해 주는 방법
mysql의 설정파일(mysql.ini)에서 [mysqld] 섹션에서 max_allowed_packet=16M 와 같이 적당한 값으로 변경하거나 추가

[mysqld]

max_allowed_packet=16



추가사항

# 해당 옵션은 쿼리 문자열 바이트 크기를 보안때문에 제한을 둔 것으로 설정된 값 이상의 패킷이 들어올 경우 드랍 처리
# 일반적으로 기본 1M 에서 많으면 1G 까지 설정이 가능한데 Clien에서 줄 수 있는 최대 max_allowed_packet 값에 맞춰서 수정하는 것이 좋음
# (주의)너무 높은 값으로 설정할 경우 커넥션, 즉 각 세션에 대해 소비하는 메모리가 커져서 오히려 서버 부하를 발생시킬 수 있음


반응형

'와사비크래커 IT Tip > DB' 카테고리의 다른 글

[DB] DBMS (Database Management System)  (0) 2020.08.20
[DB] DBS (Database System)  (0) 2020.08.20
mariadb utf8 변경  (0) 2017.11.21
Oracle 11g 기본적인 사용 방법  (0) 2017.11.21
Oracle 기본  (0) 2017.11.17