Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.
La base de données crée des tables temporaires sur le disque
Votre utilisation récente de tables temporaires sur disque a augmenté de manière significative, jusqu'à pourcentage
. La base de données crée environ le nombre
de tables temporaires par seconde. Cela peut avoir un impact sur les performances et augmenter les opérations sur le disque sur l'instance de base de données
.
Rubriques
Versions de moteur prises en charge
Ces données d'insight sont prises en charge pour toutes les versions d'Aurora MySQL.
Contexte
Il est parfois nécessaire que le serveur MySQL crée une table temporaire interne lors du traitement d'une requête. Aurora MySQL peut contenir une table temporaire interne en mémoire, où elle peut être traitée par le moteur de stockage TempTable ou MEMORY, ou stockée sur disque par InnoDB. Pour plus d'informations, consultez Utilisation des tables temporaires internes dans MySQL
Causes probables de ce problème
Une augmentation du nombre de tables temporaires sur disque indique l'utilisation de requêtes complexes. Si la mémoire configurée est insuffisante pour stocker des tables temporaires en mémoire, Aurora MySQL crée les tables sur disque. Cela peut avoir un impact sur les performances et augmenter les opérations sur le disque.
Actions
Nous vous recommandons différentes actions en fonction des causes de votre insight.
-
Pour Aurora MySQL version 3, nous vous recommandons d'utiliser le moteur de stockage TempTable.
-
Optimisez vos requêtes pour renvoyer moins de données en sélectionnant uniquement les colonnes nécessaires.
Si vous activez le schéma de performance alors que tous les instruments
statement
sont activés et temporisés, vous pouvez effectuer une requêteSYS.statements_with_temp_tables
pour récupérer la liste des requêtes utilisant des tables temporaires. Pour plus d'informations, consultez Prérequis pour l'utilisation du schéma sysdans la documentation sur MySQL. -
Envisagez d'indexer les colonnes impliquées dans les opérations de tri et de regroupement.
-
Réécrivez vos requêtes pour éviter les colonnes
BLOB
etTEXT
. Ces colonnes utilisent toujours un disque. -
Réglez les paramètres de base de données suivants :
tmp_table_size
etmax_heap_table_size
.La valeur par défaut de ces paramètres est 16 Mio. Lorsque vous utilisez le moteur de stockage MEMORY pour des tables temporaires en mémoire, leur taille maximale est définie par la plus petite des valeurs
tmp_table_size
etmax_heap_table_size
. Lorsque cette taille maximale est atteinte, MySQL convertit automatiquement la table temporaire interne en mémoire en une table temporaire interne sur disque InnoDB. Pour plus d'informations, consultez Utiliser le moteur de stockage TempTable sur Amazon RDS pour MySQL et Amazon Aurora MySQL. Note
Lorsque vous créez explicitement des tables MEMORY avec CREATE TABLE, seule la variable
max_heap_table_size
détermine la taille maximale qu'une table peut prendre. Il n'y a pas non plus de conversion vers un format sur disque.
Métriques pertinentes
Les métriques suivantes d'analyse des performances sont liées à cet insight :
-
Created_tmp_disk_tables
-
Created_tmp_tables
Pour plus d'informations, consultez Created_tmp_disk_tables