The maximum value for max_allowed_packet is 1G or 1024M.
Even if you set it higher, MySQL will not load data beyond the 1GB limit.
The MySQL Packet is for processing rows, especially in bulk. The smaller the TEXT/BLOB fields you have in your tables, the more robust the MySQL Packet will be used. So that you can be more confident in its usage, here is an explanation of just what a MySQL Packet is:
According to the page 99 of "Understanding MySQL Internals" (ISBN 0-596-00957-7), here are paragraphs 1-3 explaining it:
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
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
This variable also limits the length
of a result of many string functons.
See sql/field.cc and
sql/intem_strfunc.cc for details.