# MariaDB max\_allowed\_packet – maximale Datenpaketgröße festlegen

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](https://www.ionos.de/digitalguide/server/knowhow/was-ist-mariadb/) und [MySQL](https://www.ionos.de/digitalguide/server/knowhow/mysql-lernen-leicht-gemacht/), 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](https://www.ionos.de/digitalguide/websites/web-entwicklung/binary-large-object-blob/) (Binary Large Object) – diese maximale Größe überschreitet, verweigert der Server die Ausführung. In solchen Fällen erscheint häufig die Fehlermeldung:

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

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.

## 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.

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

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.

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

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:

```txt
max_allowed_packet=64M
```

Starten Sie den MariaDB-Server neu:

```bash
sudo systemctl restart mariadb
```

Überprüfen Sie den neuen Wert:

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

Wir erhalten das folgende Ergebnis:

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

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.


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