Die Datenbank erstellt temporäre Tabellen auf der Festplatte - Amazon Aurora

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Die Datenbank erstellt temporäre Tabellen auf der Festplatte

Ihre aktuelle Nutzung temporärer Tabellen auf der Festplatte ist erheblich gestiegen, und zwar bis zu Prozentsatz. Die Datenbank erstellt ungefähr die Anzahl temporärer Tabellen pro Sekunde. Dies kann die Leistung beeinträchtigen und die Festplattenoperationen auf der DB-Instance erhöhen.

Unterstützte Engine-Versionen

Diese Insight-Informationen werden für alle Versionen von unterstützt.

Kontext

Manchmal ist es notwendig, dass der MySQL-Server während der Verarbeitung einer Abfrage eine interne temporäre Tabelle erstellt. Aurora MySQL kann eine interne temporäre Tabelle im Speicher speichern, wo sie von der TempTable- oder MEMORY-Speicherengine verarbeitet oder von InnoDB auf der Festplatte gespeichert werden kann. Weitere Informationen finden Sie unter Interne Verwendung temporärer Tabellen in MySQL im MySQL-Referenzhandbuch.

Mögliche Ursachen für dieses Problem

Eine Zunahme temporärer Tabellen auf der Festplatte weist auf die Verwendung komplexer Abfragen hin. Wenn der konfigurierte Speicher nicht ausreicht, um temporäre Tabellen im Speicher zu speichern, erstellt Aurora MySQL die Tabellen auf der Festplatte. Dies kann die Leistung beeinträchtigen und den Festplattenbetrieb erhöhen.

Aktionen

Abhängig von den Ursachen Ihres Einblicks empfehlen wir verschiedene Aktionen.

  • Für Aurora-MySQL-Version 3 empfehlen wir die Verwendung der TempTable-Speicher-Engine.

  • Optimieren Sie Ihre Abfragen, um weniger Daten zurückzugeben, indem Sie nur die erforderlichen Spalten auswählen.

    Wenn Sie das Performance-Schema aktivieren und alle statement-Instrumente aktiviert und zeitgesteuert sind, können Sie SYS.statements_with_temp_tables abfragen, um die Liste der Abfragen abzurufen, die temporäre Tabellen verwenden. Weitere Informationen finden Sie unter Voraussetzungen für die Verwendung des sys–Schemas in der MySQL-Dokumentation.

  • Erwägen Sie die Indizierung von Spalten, die an Sortier- und Gruppierungsoperationen beteiligt sind.

  • Schreiben Sie Ihre Abfragen neu, um BLOB- und TEXT-Spalten zu vermeiden. Diese Spalten verwenden immer die Festplatte.

  • Optimieren Sie die folgenden Datenbankparameter: tmp_table_size und max_heap_table_size.

    Der Standardwert für diese Parameter ist 16 MiB. Wenn Sie die MEMORY-Speicher-Engine für temporäre In-Memory-Tabellen verwenden, wird deren maximale Größe durch den tmp_table_size- oder max_heap_table_size-Wert definiert, je nachdem, welcher Wert kleiner ist. Wenn diese maximale Größe erreicht ist, konvertiert MySQL die interne temporäre In-Memory-Tabelle automatisch in eine interne temporäre InnoDB-Tabelle auf der Festplatte. Weitere Informationen finden Sie unter Verwenden der TempTable-Speicher-Engine Amazon RDS für MySQL und Amazon Aurora MySQL.

    Anmerkung

    Beim expliziten Erstellen von MEMORY-Tabellen mit CREATE TABLE bestimmt nur die max_heap_table_size-Variable, wie groß eine Tabelle werden kann. Es erfolgt auch keine Konvertierung in ein Festplattenformat.

Relevante Metriken

Die folgenden Performance Insights-Metriken beziehen sich auf diesen Einblick:

  • Created_tmp_disk_tables

  • Created_tmp_tables

Weitere Informationen finden Sie unter Created_tmp_disk_tables in der MySQL-Dokumentation.