Antes de alterar o max_allowed_packet , primeiro vamos definir isso.
De acordo com a página 99 de "Compreendendo os internos do MySQL" (ISBN 0-596-00957-7) , aqui estão os parágrafos 1-3 explicando:
MySQL network communication code was written under the assumption that queries are always reasonably short, and therefore can be sent to and processed by the server in one chunk, which is called a packet in MySQL terminology. The server allocates the memory for a temporary buffer to store the packet, and it requests enough to fit it entirely. This architecture requires a precaution to avoid having the server run out of memory---a cap on the size of the packet, which this option accomplishes.
The code of interest in relation to this option is found in sql/net_serv.cc. Take a look at my_net_read(), then follow the call to my_real_read() and pay particular attention to net_realloc().
This variable also limits the length of a result of many string functons. See sql/field.cc and sql/intem_strfunc.cc for details.
À luz do excerto deste livro e da documentação do MySQL sobre max_allowed_packet, basicamente não há nada que você possa fazer com a superação de 1G para max_allowed_packet. No entanto, ainda há mais um aspecto a explorar em relação ao ajuste de BLOB e Text Data.
Outra questão no Server Fault fez a seguinte afirmação em relação ao InnoDB e BLOBs: innodb_log_file_size e innodb_log_buffer_size combinado deve ser maior que dez vezes seu maior objeto de blob se você tiver muitos grandes. Se não o fizer (e você não deve [ 1 , 2 ]), realmente não há necessidade de se preocupar muito com isso. Verifique o MySQL Performance Blog para um relatório detalhado sobre como calcular.
Há ainda outro aspecto a ser considerado: a opção net_buffer_length (padrão 16K) é usado como o tamanho inicial do MySQL Packet. O pacote pode expandir dinamicamente para max_allowed_packet. Pode inevitavelmente encolher de volta para o tamanho especificado por net_buffer_length. Os valores máximos de net_buffer_length são 1M. Você pode querer definir o valor disso para 1M. Pode não ajudar muito se você estiver usando o 1G, mas também não faria mal.
Se você realmente quer um Pacote MySQL maior que 1G, o trecho do livro que citei diz qual código-fonte usar que define internals do MySQL Packet. Você está livre para tentar aumentar o limite. No entanto, o código-fonte pode ter limites internos próprios se o código assumir 1G além dos números explícitos que estão sendo definidos.
Espero que esta informação ajude !!!