The world's most popular open source database
Un paquete de comunicación es una única sentencia SQL enviada al servidor MySQL o una única fila que es enviada al cliente.
En MySQL 3.23, el páquete más grande posible es de 16MB, debido a los límites del protocolo cliente/servidor. En MySQL 4.0.1 y superiores, el límite es de 1GB.
Cuando un cliente MySQL o el servidor mysqld recibe un paquete más grande
de max_allowed_packet bytes, este devuelve un error
Packet too large y cierra la conexión. Con algunos clientes, también
podría obtener un error Lost connection to MySQL server during query si el
paquete de comunicación es demasiado grande.
Tanto el cliente como el servidor tienen su propia variable max_allowed_packet
así que si quiere gestionar paquetes grandes, debe aumentar esta variable tanto en el cliente como
en el servidor.
Si está utilizando el programa cliente mysql, el valor por defecto de la
variable max_allowed_packet es de 16MB. Este es también el máximo valor permitido
anteriormente a la versión MySQL 4.0. Para establecer un valor mayor desde 4.0 en adelante, inicie
mysql de la siguiente manera:
mysql> mysql --max_allowed_packet=32M
Esto establece el tamaño del paquete en 32MB.
El valor por defecto de la variable max_allowed_packet en el servidor es de 1MB.
Pue incrementar esto si el servidor necesita gestionar consultas grandes (por ejemplo, si está trabajando
con columnas BLOB grandes). Por ejemplo, para establecer la variable a 16MB, inicie el
servidor así:
mysql> mysqld --max_allowed_packet=16M
Para versiones previas a MySQL 4.0, utilice esta sintaxis:
mysql> mysqld --set-variable=max_allowed_packet=16M
También puede utilizar un archivo de opciones para establecer max_allowed_packet.
Por ejemplo, para establecer el valor para el servidor en 16MB, añada las siguientes líneas en su
archivo de opciones:
[mysqld] max_allowed_packet=16M
Para versiones previas a MySQL 4.0, utilice esta sintaxis:
[mysqld] set-variable = max_allowed_packet=16M
Es seguro incrementar el valor de esta variable porque la memoria extra tan solo es utilizada cuando se necesite. Por ejemplo, mysqld solo ocupa más memoria cuando usted ejecuta una consulta grande o cuando mysqld debe retornar una fila de resultados grande. El valor por defecto pequeño en la variable, es una precaución para atrapar paquetes incorrectos entre el cliente y el servidor, y también para asegurarse de que usted no se queda sin memoria al utilizar paquetes grandes de manera accidental.
También puede sufrir problemas extraños con paquetes grandes si está utilizando valores
BLOB grandes pero no ha dado a mysqld acceso a suficiente memoria
para gestionar la consulta. Si sospecha que este es el caso, intente añadir
ulimit -d 256000 al principio del script mysqld_safe
y reinicie mysqld.
Ésta es una traducción del manual de referencia de MySQL, que puede encontrarse en dev.mysql.com. El manual de referencia original de MySQL está escrito en inglés, y esta traducción no necesariamente está tan actualizada como la versión original. Para cualquier sugerencia sobre la traducción y para señalar errores de cualquier tipo, no dude en dirigirse a mysql-es@vespito.com.

