# MariaDB max\_allowed\_packet: cómo ajustar el tamaño de los paquetes

MariaDB `max_allowed_packet` es una variable de sistema que establece el tamaño máximo de los paquetes de datos entre la base de datos y la aplicación. Si trabajas con archivos pesados, numerosos registros o consultas SQL largas, puedes encontrarte con límites si no ajustas este valor correctamente.

## ¿Qué es MariaDB `max_allowed_packet`?

La variable de sistema `max_allowed_packet` es uno de los parámetros de configuración más importantes en [MariaDB](https://www.ionos.mx/digitalguide/servidores/know-how/que-es-mariadb/) y [MySQL](https://www.ionos.mx/digitalguide/servidores/know-how/guia-para-aprender-a-utilizar-mysql/), ya que influye directamente en la estabilidad y fiabilidad de las transferencias de datos. Esta variable define el **tamaño máximo de un paquete de datos** que un cliente, como una aplicación o un script SQL, puede enviar a un servidor MariaDB o recibir de este. El valor predeterminado varía según el sistema, la distribución o la versión de MariaDB.

En MariaDB, un paquete de datos agrupa instrucciones SQL y contenidos que se transmiten entre servidor y cliente a través de la red. Si una instrucción SQL, por ejemplo, un `INSERT` con numerosos valores o un [BLOB](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/blob-binary-large-object/) (Binary Large Object), supera el tamaño máximo configurado, el servidor rechaza la operación. En esos casos suele aparecer el siguiente error:

```sql
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytes
```

Este parámetro protege al servidor frente a solicitudes excesivamente grandes que podrían saturar los recursos o provocar inestabilidad. Al mismo tiempo, ofrece a los administradores la posibilidad de ajustar el tamaño permitido a las necesidades concretas de su entorno.

Es importante saber que tanto el servidor como el cliente tienen su propio valor de `max_allowed_packet`. La transmisión solo será posible si ambos aceptan paquetes del mismo tamaño. Por ejemplo, si el servidor está configurado en 64 MB, pero el cliente en solo 16 MB, cualquier paquete superior a 16 MB fallará igualmente.

## Sintaxis de MariaDB `max_allowed_packet`

MariaDB permite ajustar `max_allowed_packet` tanto de forma temporal como permanente. La sintaxis varía según el caso de uso:

### Cambiar `max_allowed_packet` temporalmente para una sesión

Si solo quieres modificar el valor de `max_allowed_packet` en una conexión concreta, puedes hacerlo de manera temporal a nivel de sesión:

```sql
SET SESSION max_allowed_packet = 67108864;
```

Este comando eleva el límite a 64 MB, pero únicamente para la conexión activa del cliente.

### Cambiar `max_allowed_packet` globalmente (a nivel de servidor) en tiempo de ejecución

Si deseas ajustar `max_allowed_packet` en todo el servidor, debes definir el valor de forma global:

```sql
SET GLOBAL max_allowed_packet = 67108864;
```

Con este comando, MariaDB aplica el nuevo valor a todas las conexiones futuras. Las sesiones ya abiertas no se ven afectadas. La configuración se mantiene hasta que se reinicie el servidor, por lo que resulta adecuada para ajustes persistentes durante la ejecución.

## Casos de uso típicos de `max_allowed_packet`

En muchos escenarios, el valor predeterminado de `max_allowed_packet` puede quedarse corto rápidamente. En procesos con gran volumen de datos o en tareas automatizadas, un límite demasiado bajo provoca errores o interrupciones. Estos son algunos casos habituales en los que conviene ajustarlo:

- **Importación de grandes volcados SQL:** al restaurar un backup o un dump de base de datos con muchos datos, el valor predeterminado suele ser insuficiente. Aumentar este valor evita que el proceso se interrumpa.
- **Procesamiento de objetos binarios grandes (BLOB):** aplicaciones que almacenan archivos binarios (por ejemplo, PDF, imágenes o archivos ZIP) suelen requerir un valor mayor de `max_allowed_packet`.
- **Inserción de numerosos valores en un único `INSERT`:** cuando se escriben grandes cantidades de datos en una sola sentencia, como en procesos ETL o cargas masivas, el tamaño de los paquetes aumenta considerablemente.
- **Aplicaciones web con formularios dinámicos o cargas de archivos:** frameworks que generan automáticamente sentencias SQL extensas pueden alcanzar fácilmente el límite si no se ajusta el parámetro.

No obstante, no conviene aumentar `max_allowed_packet` más de lo necesario, ya que puede repercutir en el consumo de memoria y la estabilidad. En la mayoría de los entornos productivos, un valor entre `16M` y `64M` es suficiente. Solo en casos especiales, como las migraciones de bases de datos, resulta útil configurar un tamaño más elevado.

## Ejemplo de uso de `max_allowed_packet`

Imagina que gestionas una aplicación web en la que los usuarios pueden subir archivos PDF de hasta 64 MB directamente a la base de datos. Con el valor estándar de 4 MB esto no sería posible. Para garantizar un funcionamiento estable, debes ajustar la configuración.

Abre el archivo `/etc/mysql/my.cnf` en Linux o `my.ini` en Windows y añade lo siguiente bajo la sección `[mysqld]`:

```txt
max_allowed_packet=64M
```

Reinicia el servidor MariaDB:

```bash
sudo systemctl restart mariadb
```

Comprueba el nuevo valor:

```sql
SHOW VARIABLES LIKE 'max_allowed_packet';
```

El resultado será el siguiente:

```sql
+---------------------+----------+
| Variable_name       | Value    |
+---------------------+----------+
| max_allowed_packet  | 67108864 |
+---------------------+----------+
```

De esta forma, la aplicación podrá procesar paquetes de hasta 64 MB sin problemas. De este modo evitas errores, mejoras la estabilidad y garantizas un funcionamiento fluido incluso en transferencias de gran tamaño.


This is a markdown version of: [https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mariadb-max-allowed-packet/](https://www.ionos.mx/digitalguide/hosting/cuestiones-tecnicas/mariadb-max-allowed-packet/) for AI/LLM consumption.