Infra & Tools/MYSQL

DB 서버에서 한번에 받아들일 수 있는 최대 쿼리 크기?

sung.hyun.1204 2023. 8. 24. 15:10

my sql 의 서버에서 한번에 받을 수 있는 쿼리의 크기는 무제한이 아니다.

 

한번의 받을 수 있는 쿼리 크기를 확인 하는 명령어는 다음과 같다.

 

show variables where Variable_name = 'max_allowed_packet'

 

value 67 * 10^6

 

내 로컬 컴퓨터의 MYSQL 의 max_allowed_packet 의 값은 67MB 이다.

 

 

cf 

1Byte * 10^3 = 1KB

1KB * 10^3 = 1MB

 

 

MySQL 5.7 ,8.0 공식 문서에 따르면 기본 사이즈의 크기는 최대 약 4MB,67MB 이며 , 패킷의 메시지 버퍼는 net_buffer_length 의 바이트 크기 만큼 초기화 되어서 사용이 된다.

 

각각의 클라이언트 스레드는 연결 버퍼와 결과 버퍼에 연관이 되어있으며 , 두개의 버퍼 크기 모두 net_buffer_length 로 부터 받은 크기로 시작이 되며, 동적으로 크기가 변형이 된다.

 

결과 버퍼의 경우 net_buffer_length 의 크기 만큼 sql 의 구문의 수행이후 다시 돌아온다.

net_buffer_length는 최대 1MB 의 크기 만큼 설정이 가능하다.

 

 

나의 경우 설치된 MySQL 의 버전은 8.0 으로 max_allowed_packet의 기본 값이 67MB 이며 최대 값은 Mysql 5.7 과 같은 1GB 이다.

 

 

정리 )

DB 서버에서 한번에 받아들일 수 있는 최대 쿼리 크기?의 답은 MySql 의 packet message buffer 의 크기에 달려 있고.

초기 설정은 net_buffet_length 의 크기로 시작이 되며 최대 버퍼의 크기는 max_allowed_packet 의 크기에 따라 설정이 된다.

 

 

 

 

출처:

 

8.0 공식 문서

https://dev.mysql.com/doc/refman/8.0/en/server-system-variables.html#sysvar_max_allowed_packet

 

MySQL :: MySQL 8.0 Reference Manual :: 5.1.8 Server System Variables

 

dev.mysql.com

 

 

5.7 공식 문서

https://dev.mysql.com/doc/refman/5.7/en/server-system-variables.html#sysvar_max_allowed_packet