MariaDB max_allowed_packet ist eine Systemvariable, die angibt, wie groß ein einzelnes Datenpaket in der Kommunikation zwischen Datenbank und Anwendung sein darf. Wer große Dateien, viele Datensätze oder lange SQL-Befehle überträgt, stößt ohne eine Anpassung schnell an Grenzen.

Was ist MariaDB max_allowed_packet?

Die Systemvariable max_allowed_packet gehört zu den wichtigsten Konfigurationsparametern in MariaDB und MySQL, wenn es um die Stabilität und Zuverlässigkeit von Datenübertragungen geht. Sie definiert die maximale Größe eines einzelnen Datenpakets, das ein Client, wie zum Beispiel eine Anwendung oder ein SQL-Skript, an einen MariaDB-Server sendet oder von ihm empfängt. Der voreingestellte Standardwert unterscheidet sich je nach System, Distribution oder MariaDB-Version.

Ein Datenpaket in MariaDB bündelt SQL-Anweisungen und Inhalte, die der Server oder der Client über das Netzwerk austauscht. Wenn ein SQL-Befehl – beispielsweise ein großer INSERT mit vielen Werten oder ein BLOB (Binary Large Object) – diese maximale Größe überschreitet, verweigert der Server die Ausführung. In solchen Fällen erscheint häufig die Fehlermeldung:

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

Dieser Parameter schützt den Server vor übergroßen Anfragen, die potenziell Ressourcen überlasten oder zu Instabilität führen können. Gleichzeitig ermöglicht er Administratorinnen und Administratoren, die zulässige Größe an die Anforderungen ihrer Umgebung anzupassen.

Sie sollten wissen, dass sowohl der Server als auch der Client ihren eigenen max_allowed_packet-Wert haben. Die Übertragung funktioniert nur, wenn beide Seiten Pakete in der definierten Größe akzeptieren. Ist zum Beispiel der Server auf 64 Megabyte konfiguriert, der Client aber nur auf 16 Megabyte, kann ein Paket über 16 Megabyte trotzdem scheitern.

Compute Engine
Die ideale IaaS für Ihre Workloads
  • Kostengünstige vCPUs und leistungsstarke dedizierte Cores
  • Höchste Flexibilität ohne Mindestvertragslaufzeit
  • Inklusive 24/7 Experten-Support

So sieht die Syntax von MariaDB max_allowed_packet aus

MariaDB erlaubt sowohl temporäre als auch dauerhafte Anpassungen von max_allowed_packet. Die Syntax variiert je nach Einsatzzweck:

max_allowed_packet temporär für eine Sitzung ändern

Wenn Sie den Wert von max_allowed_packet nur für eine einzelne Verbindung anpassen möchten, ändern Sie ihn temporär auf Sitzungsebene.

SET SESSION max_allowed_packet = 67108864;
sql

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

max_allowed_packet global (serverweit) zur Laufzeit ändern

Um max_allowed_packet serverweit anzupassen, legen Sie den Wert global fest.

SET GLOBAL max_allowed_packet = 67108864;
sql

Damit setzt MariaDB den Wert für alle zukünftigen Verbindungen. Bestehende Sitzungen bleiben unverändert. Die Einstellung bleibt bis zum Neustart des Servers bestehen und eignet sich für dauerhafte Anpassungen im laufenden Betrieb.

Typische Anwendungsfälle von max_allowed_packet

In vielen Szenarien stößt der Standardwert von max_allowed_packet schnell an seine Grenzen. Besonders bei datenintensiven Vorgängen oder automatisierten Abläufen kann ein zu niedrig gesetzter Wert zu Fehlern oder Abbrüchen führen. Die folgenden Anwendungsfälle stellen typische Situationen dar, in denen eine Anpassung sinnvoll ist:

  • Import großer SQL-Dumps: Wenn Sie ein Backup oder Datenbank-Dump mit umfangreichen Daten einspielen, kann die Standardeinstellung schnell zu klein sein. Ein höherer Wert verhindert hier Abbrüche.
  • Verarbeitung großer BLOBs: Anwendungen, die Binärdateien (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 geschrieben werden, etwa bei ETL-Prozessen oder Massenuploads, steigt die Paketgröße entsprechend.
  • Webanwendungen mit dynamischen Formularen oder Uploads: Frameworks, die automatisch große SQL-Statements generieren, erreichen ohne Anpassung häufig die Paketgrenze.

Erhöhen Sie in MariaDB max_allowed_packet nicht unnötig hoch, da dies Auswirkungen auf den Speicherverbrauch und die Stabilität haben kann. Ein Wert von 16M bis 64M reicht für die meisten produktiven Anwendungen aus. Nur in Spezialfällen, zum Beispiel bei Datenbankmigrationen, sind größere Werte sinnvoll.

Beispiel für den Einsatz von max_allowed_packet

Angenommen, Sie betreiben eine Webanwendung, die Benutzerinnen und Benutzern erlaubt, PDF-Dateien bis zu 64 Megabyte in die Datenbank hochzuladen. Ein eingestellter Standardwert von 4 Megabyte reicht hierfür nicht aus. Um die Anwendung zuverlässig 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

Überprü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 Datenpakete bis zu 64 Megabyte problemlos verarbeiten. Das vermeidet Fehler, verbessert die Stabilität und erlaubt einen reibungslosen Betrieb auch bei größeren Datentransfers.

Managed Database Services
Datenbanken – Auf´s Wesentliche konzentrieren
  • IONOS Cloud-Partner: Die Experten für Ihren Datenbank-Betrieb
  • Flexibel: Maßgeschneiderte Datenbank-Lösungen ganz auf Ihre Bedürfnisse
  • Rechenzentren in Deutschland: Ihre Daten sind sicher
War dieser Artikel hilfreich?
Zum Hauptmenü