MariaDB max_allowed_packet: come impostare la dimensione massima dei pacchetti di dati
Il parametro max_allowed_packet in MariaDB è una variabile di sistema che definisce la dimensione massima di un pacchetto di dati inviato o ricevuto tra il server di database e un’applicazione. Se trasferisci file di grandi dimensioni, numerosi record o comandi SQL lunghi, senza una modifica di questo valore potresti presto imbatterti in alcuni limiti.
Che cos’è max_allowed_packet in MariaDB?
La variabile di sistema max_allowed_packet è uno dei principali parametri di configurazione in MariaDB e MySQL, fondamentale per garantire trasmissioni di dati stabili e affidabili. Stabilisce la dimensione massima di un singolo pacchetto di dati che un client (come un’applicazione o uno script SQL) può inviare al server MariaDB o ricevere da esso. Il valore predefinito può variare a seconda della versione, del sistema operativo o della distribuzione utilizzata.
Un pacchetto di dati può includere comandi SQL e contenuti scambiati tra client e server. Se un comando SQL, ad esempio un’istruzione INSERT molto ampia e con molti valori, oppure un BLOB (Binary Large Object) supera la dimensione consentita, il server restituisce un errore simile a questo:
ERROR 1153 (08S01): Got a packet bigger than 'max_allowed_packet' bytessqlQuesta variabile serve a proteggere il server da richieste troppo grandi, che potrebbero causare instabilità o sovraccarichi. Al tempo stesso, ti permette di adattare la configurazione alle reali esigenze del tuo ambiente.
Ricorda che sia il server che il client hanno un proprio valore max_allowed_packet. La trasmissione funziona solo se entrambe le parti accettano pacchetti della dimensione definita. Se il server accetta pacchetti da 64 MB ma il client solo fino a 16 MB, non sarà comunque possibile trasferire pacchetti di dimensioni superiori a 16 MB.
- vCPU estremamente vantaggiose e potenti core dedicati
- Massima flessibilità senza periodo contrattuale minimo
- Servizio di assistenza tecnica 24 ore su 24, 7 giorni su 7
La sintassi di max_allowed_packet in MariaDB
MariaDB consente modifiche temporanee e permanenti di max_allowed_packet. La sintassi varia a seconda dello scopo:
Modificare max_allowed_packet temporaneamente per una sessione
Se desideri cambiare il valore di max_allowed_packet solo per una singola sessione, puoi farlo così:
SET SESSION max_allowed_packet = 67108864;sqlCon questo comando imposti il limite a 64 MB, ma solo per la connessione attiva.
Modificare max_allowed_packet globalmente (per il server)
Per modificare max_allowed_packet a livello di server per tutte le connessioni future, usa:
SET GLOBAL max_allowed_packet = 67108864;sqlIn questo modo MariaDB imposta il valore per tutte le connessioni future. Questa modifica è valida fino al riavvio del server e non influisce sulle connessioni già attive. È utile per un adattamento permanente durante il normale funzionamento.
Casi d’uso tipici di max_allowed_packet
In molti scenari, il valore predefinito di max_allowed_packet non è sufficiente, soprattutto con operazioni intensive o automatizzate, dove un valore troppo basso può causare errori o interruzioni. I seguenti casi d’uso rappresentano situazioni tipiche in cui una modifica del valore si rivela opportuna:
- Import di dump SQL molto grandi: durante il ripristino di backup o dump di database molto voluminosi, il limite predefinito potrebbe causare errori. Aumentando il valore si riducono le probabilità che l’operazione fallisca.
- Gestione di BLOB di grandi dimensioni: le applicazioni che memorizzano file binari (come PDF, immagini, archivi ZIP) nel database richiedono spesso un valore
max_allowed_packetmaggiore. - Istruzioni
INSERTcon molti valori: quando grandi quantità di dati vengono scritti in un unico statement, ad esempio nei processi ETL o nei caricamenti di massa, una singola istruzione può diventare molto pesante. - Applicazioni web con moduli dinamici o caricamenti di file: alcuni framework generano automaticamente istruzioni SQL di grandi dimensioni che superano facilmente i limiti standard.
Fai attenzione a non alzare il valore di max_allowed_packet più del necessario: un valore troppo elevato può aumentare il consumo di memoria e compromettere la stabilità del sistema. Per la maggior parte degli scenari produttivi, un valore compreso tra 16M e 64M è sufficiente. Usa valori superiori solo in casi eccezionali, come le migrazioni di database o l’importazione di dati particolarmente voluminosi.
Esempio di utilizzo di max_allowed_packet
Supponiamo che la tua applicazione web consenta il caricamento di file PDF fino a 64 MB. Se il valore predefinito di max_allowed_packet è di 4 MB, l’operazione fallirebbe. Per garantire il funzionamento affidabile dell’applicazione, è necessario modificare il valore.
Apri il file /etc/mysql/my.cnf su Linux, oppure my.ini su Windows. Aggiungi questa riga nella sezione [mysqld]:
max_allowed_packet=64MtxtRiavvia il server MariaDB:
sudo systemctl restart mariadbbashPoi verifica il nuovo valore con:
SHOW VARIABLES LIKE 'max_allowed_packet';sqlCome risultato otteniamo:
+---------------------+----------+
| Variable_name | Value |
+---------------------+----------+
| max_allowed_packet | 67108864 |
+---------------------+----------+sqlL’applicazione è ora in grado di elaborare senza problemi pacchetti di dati fino a 64 megabyte. Ciò evita errori, migliora la stabilità e consente un funzionamento regolare anche in caso di trasferimenti di dati di grandi dimensioni.
- Partner IONOS Cloud
- Soluzioni flessibili e su misura
- Data center situati in Europa

