AWS Builder Center: Learn, Build and Connect with builders in the AWS community
AWS Builder Center is the official home for builders on AWS. Share and read what others are working on, follow people who inspire you, explore training and workshops, and find tools to support what you're building.
Wie behebe ich Probleme mit temporären Tabellen und vollem Speicherplatz in Amazon RDS und Aurora MySQL-kompatibel?
Ich habe Probleme mit temporären Tabellen und vollem Speicherplatz, wenn ich Abfragen in einer Datenbank von Amazon Relational Database Service oder der Amazon Aurora MySQL-kompatiblen Ausgabe ausführe.
Kurzbeschreibung
Wenn du Abfragen in Amazon RDS oder Aurora MySQL-kompatibel ausführst, wird möglicherweise die folgende Fehlermeldung angezeigt:
„The table '/rdsdbdata/tmp/#sqlxx_###' is full“
Du erhältst die obenstehende Fehlermeldung, wenn du den gesamten temporären Tabellenspeicher auf deiner Amazon RDS- oder Aurora MySQL-kompatiblen Instance verwendet hast. Die Fehlermeldung wird auch angezeigt, wenn du Abfragen ausführst, die große temporäre Tabellen generieren, die die konfigurierten Speicherkontingente überschreiten.
Lösung
Vollständige temporäre Tabellen auflösen
MySQL 8.0 und Aurora MySQL-kompatibel 3.x verwenden eine TempTable-Speicher-Engine für komplexe Abfragen, bei denen du Zwischenergebnisse speichern musst.
Die TempTable-Speicher-Engine erstellt temporäre Tabellen im Speicher bis zur Standardgröße für den Parameter temptable_max_ram. Wenn du das Kontingent überschreitest, verwenden temporäre Tabellen speicherzugeordnete Dateien, um in den Festplattenspeicher überzulaufen, und zwar bis zur Standardgröße für den Parameter temptable_max_mmap.
Wenn die von Abfragen generierten temporären Daten die Standardgröße für den Parameter temptable_max_mmap überschreiten, wird möglicherweise die Fehlermeldung „Table is full“ angezeigt.
Gehe wie folgt vor, um dieses Problem zu beheben:
- Erhöhe die Parameter temptable_max_ram und temptable_max_mmap, um mehr Arbeitsspeicher und Speicherplatz für temporäre Tabellen freizugeben. Weitere Informationen findest du unter temptable_max_ram und temptable_max_mmap auf der MySQL-Website.
Hinweis: Der Parameter temptable_max_mmap darf 80 % der lokalen Speichergröße auf der Aurora-Instance nicht überschreiten. - Setze den Parameter internal_tmp_mem_storage_engine auf MEMORY, um das Festplattenkontingent temptable_max_mmap zu umgehen. Stelle außerdem die Parameter tmp_table_size und max_heap_table_size ein, um die Größe einzelner interner temporärer Tabellen zu begrenzen. Weitere Informationen findest du unter internal_temp_mem_storage_engine, tmp_table_size und max_heap_table_size auf der MySQL-Website.
Hinweis: Die MEMORY-Einstellung gilt nur für die Aurora-Writer-Instance. Auf Reader-Instances verwendet Aurora MySQL die TempTable-Speicher-Engine. - Aktiviere die Parameter aurora_tmptable_enable_per_table_limit und passe tune tmp_table_size an, um den maximalen Speicher für jede interne temporäre Tabelle einzuschränken.
- Verwende die Amazon CloudWatch-Metrik FreeLocalStorage, um den lokalen Speicherplatz zu überwachen, der der Aurora-DB-Instance zugeordnet ist. Verwende die CloudWatch-Metrik FreeStorageSpace, um den freien Datenspeicherplatz zu überwachen, der mit der RDS-MySQL-Instance verknüpft ist.
Abfragen optimieren, um temporäre Tabellen zu reduzieren
Bei einigen Abfragen werden möglicherweise große temporäre Tabellen generiert, die zu Fehlern führen können.
Gehe wie folgt vor, um Abfragen zu optimieren:
- Verwende geeignete Indizes, insbesondere für Abfragen, die GROUP BY, ORDER BY, Unterabfragen und Ansichten partitionierter Tabellen beinhalten.
- Verwende die Partitionsbereinigung für Abfragen in partitionierten Tabellen, damit du nicht die gesamte Tabelle scannst.
- Verwende Indizes für Abfragen, die Dateisortierungen durchführen, um implizite temporäre Tabellen zu generieren. Oder passe den Parameter sort_buffer_size an.
Andere Ursachen für Probleme mit vollem Speicher beheben
Die folgenden Probleme können auch zu Problemen mit vollem Speicher in Amazon RDS- und Aurora MySQL-kompatiblen Instances führen:
- Große Datenbank- oder Tabellengrößen, die die lokale Speicherkapazität überschreiten.
- Lokaler Speicherplatzverbrauch durch Auditprotokolle, langsame Abfrageprotokolle oder allgemeine Abfrageprotokolle.
Gehe wie folgt vor, um diese Probleme zu beheben:
- Verwende für DDL-Operationen wie Indexneuerstellungen oder Tabellenänderungen das Percona-Toolkit, damit du keine großen temporären Tabellen generierst. Weitere Informationen findest du unter pt-online-schema-change auf der Percona-Website.
- Überwache die lokale Speichernutzung.
- Optimiere Abfragen und Tabellenstrukturen.
- Deaktiviere Protokolle.
- Skaliere deine Aurora MySQL-Instance, um die lokale Speicherkapazität zu erhöhen.
Ähnliche Informationen
TempTable-Speicher-Engine auf Amazon RDS für MySQL und Amazon Aurora MySQL verwenden
Neues temporäres Tabellenverhalten in Aurora MySQL Version 3
- Tags
- Aurora MySQL
- Sprache
- Deutsch

Relevanter Inhalt
AWS OFFICIALAktualisiert vor einem Jahr