O código de comunicação de rede do MySQL foi escrito sob a premissa de que as consultas sempre são razoavelmente curtas e, portanto, podem ser enviadas e processadas pelo servidor em um pedaço, chamado de pacote na terminologia do MySQL. O servidor aloca a memória para um buffer temporário para armazenar o pacote e solicita o suficiente para ajustá-lo totalmente. Essa arquitetura requer uma precaução para evitar que o servidor fique sem memória - um limite para o tamanho do pacote, que essa opção realiza.
O código de interesse em relação a esta opção é encontrado em
sql / net_serv.cc . Dê uma olhada em my_net_read () , siga a chamada para my_real_read () e preste atenção especial a
net_realloc () .
Essa variável também limita o comprimento de um resultado de muitas funções de string. Veja sql / field.cc e
sql / intem_strfunc.cc para obter detalhes.
Esta é provavelmente a explicação mais completa de max_allowed_packet que eu já vi. Eu digitei esses 3 parágrafos diretamente do livro.