MariaDB max_allowed_packet ist eine Sys­tem­va­ria­ble, die angibt, wie groß ein einzelnes Da­ten­pa­ket in der Kom­mu­ni­ka­ti­on zwischen Datenbank und Anwendung sein darf. Wer große Dateien, viele Da­ten­sät­ze oder lange SQL-Befehle überträgt, stößt ohne eine Anpassung schnell an Grenzen.

Was ist MariaDB max_allowed_packet?

Die Sys­tem­va­ria­ble max_allowed_packet gehört zu den wich­tigs­ten Kon­fi­gu­ra­ti­ons­pa­ra­me­tern in MariaDB und MySQL, wenn es um die Sta­bi­li­tät und Zu­ver­läs­sig­keit von Da­ten­über­tra­gun­gen geht. Sie definiert die maximale Größe eines einzelnen Da­ten­pa­kets, das ein Client, wie zum Beispiel eine Anwendung oder ein SQL-Skript, an einen MariaDB-Server sendet oder von ihm empfängt. Der vor­ein­ge­stell­te Stan­dard­wert un­ter­schei­det sich je nach System, Dis­tri­bu­ti­on oder MariaDB-Version.

Ein Da­ten­pa­ket in MariaDB bündelt SQL-An­wei­sun­gen und Inhalte, die der Server oder der Client über das Netzwerk aus­tauscht. Wenn ein SQL-Befehl – bei­spiels­wei­se ein großer INSERT mit vielen Werten oder ein BLOB (Binary Large Object) – diese maximale Größe über­schrei­tet, ver­wei­gert der Server die Aus­füh­rung. In solchen Fällen erscheint häufig die Feh­ler­mel­dung:

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

Dieser Parameter schützt den Server vor über­gro­ßen Anfragen, die po­ten­zi­ell Res­sour­cen über­las­ten oder zu In­sta­bi­li­tät führen können. Gleich­zei­tig er­mög­licht er Ad­mi­nis­tra­to­rin­nen und Ad­mi­nis­tra­to­ren, die zulässige Größe an die An­for­de­run­gen ihrer Umgebung an­zu­pas­sen.

Sie sollten wissen, dass sowohl der Server als auch der Client ihren eigenen max_allowed_packet-Wert haben. Die Über­tra­gung funk­tio­niert nur, wenn beide Seiten Pakete in der de­fi­nier­ten Größe ak­zep­tie­ren. Ist zum Beispiel der Server auf 64 Megabyte kon­fi­gu­riert, der Client aber nur auf 16 Megabyte, kann ein Paket über 16 Megabyte trotzdem scheitern.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kos­ten­güns­ti­ge vCPUs und leis­tungs­star­ke de­di­zier­te Cores
  • Höchste Fle­xi­bi­li­tät ohne Min­dest­ver­trags­lauf­zeit
  • Inklusive 24/7 Experten-Support

So sieht die Syntax von MariaDB max_allowed_packet aus

MariaDB erlaubt sowohl temporäre als auch dau­er­haf­te An­pas­sun­gen von max_allowed_packet. Die Syntax variiert je nach Ein­satz­zweck:

max_allowed_packet temporär für eine Sitzung ändern

Wenn Sie den Wert von max_allowed_packet nur für eine einzelne Ver­bin­dung anpassen möchten, ändern Sie ihn temporär auf Sit­zungs­ebe­ne.

SET SESSION max_allowed_packet = 67108864;
sql

Dieser Befehl erhöht das Limit auf 64 Megabyte, aber nur für die aktuelle Client-Ver­bin­dung.

max_allowed_packet global (ser­ver­weit) zur Laufzeit ändern

Um max_allowed_packet ser­ver­weit an­zu­pas­sen, legen Sie den Wert global fest.

SET GLOBAL max_allowed_packet = 67108864;
sql

Damit setzt MariaDB den Wert für alle zu­künf­ti­gen Ver­bin­dun­gen. Be­stehen­de Sitzungen bleiben un­ver­än­dert. Die Ein­stel­lung bleibt bis zum Neustart des Servers bestehen und eignet sich für dau­er­haf­te An­pas­sun­gen im laufenden Betrieb.

Typische An­wen­dungs­fäl­le von max_allowed_packet

In vielen Szenarien stößt der Stan­dard­wert von max_allowed_packet schnell an seine Grenzen. Besonders bei da­ten­in­ten­si­ven Vorgängen oder au­to­ma­ti­sier­ten Abläufen kann ein zu niedrig gesetzter Wert zu Fehlern oder Abbrüchen führen. Die folgenden An­wen­dungs­fäl­le stellen typische Si­tua­tio­nen dar, in denen eine Anpassung sinnvoll ist:

  • Import großer SQL-Dumps: Wenn Sie ein Backup oder Datenbank-Dump mit um­fang­rei­chen Daten ein­spie­len, kann die Stan­dard­ein­stel­lung schnell zu klein sein. Ein höherer Wert ver­hin­dert hier Abbrüche.
  • Ver­ar­bei­tung großer BLOBs: An­wen­dun­gen, die Bi­när­da­tei­en (zum Beispiel PDFs, Bilder oder ZIP-Archive) in der Datenbank speichern, benötigen oft ein größeres max_allowed_packet.
  • Viele Werte in einem INSERT: Wenn große Mengen an Daten in einem einzigen Statement ge­schrie­ben werden, etwa bei ETL-Prozessen oder Mas­sen­u­ploads, steigt die Pa­ket­grö­ße ent­spre­chend.
  • Web­an­wen­dun­gen mit dy­na­mi­schen For­mu­la­ren oder Uploads: Frame­works, die au­to­ma­tisch große SQL-State­ments ge­ne­rie­ren, erreichen ohne Anpassung häufig die Pa­ket­gren­ze.

Erhöhen Sie in MariaDB max_allowed_packet nicht unnötig hoch, da dies Aus­wir­kun­gen auf den Spei­cher­ver­brauch und die Sta­bi­li­tät haben kann. Ein Wert von 16M bis 64M reicht für die meisten pro­duk­ti­ven An­wen­dun­gen aus. Nur in Spe­zi­al­fäl­len, zum Beispiel bei Da­ten­bank­mi­gra­tio­nen, sind größere Werte sinnvoll.

Beispiel für den Einsatz von max_allowed_packet

An­ge­nom­men, Sie betreiben eine Web­an­wen­dung, die Be­nut­ze­rin­nen und Benutzern erlaubt, PDF-Dateien bis zu 64 Megabyte in die Datenbank hoch­zu­la­den. Ein ein­ge­stell­ter Stan­dard­wert von 4 Megabyte reicht hierfür nicht aus. Um die Anwendung zu­ver­läs­sig zu betreiben, passen Sie den Wert an.

Öffnen Sie die Datei /etc/mysql/my.cnf in Linux oder my.ini, wenn Sie Windows nutzen. Fügen Sie unter [mysqld] folgenden Eintrag hinzu:

max_allowed_packet=64M
txt

Starten Sie den MariaDB-Server neu:

sudo systemctl restart mariadb
bash

Über­prü­fen Sie den neuen Wert:

SHOW VARIABLES LIKE 'max_allowed_packet';
sql

Wir erhalten das folgende Ergebnis:

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

Die Anwendung kann nun Da­ten­pa­ke­te bis zu 64 Megabyte pro­blem­los ver­ar­bei­ten. Das vermeidet Fehler, ver­bes­sert die Sta­bi­li­tät und erlaubt einen rei­bungs­lo­sen Betrieb auch bei größeren Da­ten­trans­fers.

Managed Database Services
Da­ten­ban­ken – Auf´s We­sent­li­che kon­zen­trie­ren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maß­ge­schnei­der­te Datenbank-Lösungen ganz auf Ihre Be­dürf­nis­se
  • Re­chen­zen­tren in Deutsch­land: Ihre Daten sind sicher
Zum Hauptmenü