Il database sta creando tabelle temporanee su disco - Amazon Aurora

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

Il database sta creando tabelle temporanee su disco

L'utilizzo recente della tabella temporanea su disco è aumentato in modo significativo, fino al valore di percentage. Il database crea le tabelle temporanee al secondo come specificato in number. Ciò potrebbe influire sulle prestazioni e aumentare le operazioni su disco in db-instance.

Versioni del motore supportate

Queste informazioni approfondite sono supportate per tutte le versioni di Aurora MySQL.

Context

A volte è necessario che il server MySQL crei una tabella temporanea interna durante l'elaborazione di una query. Aurora MySQL può contenere una tabella temporanea interna in memoria, dove può essere elaborata dal motore di archiviazione TempTable o MEMORY o archiviata su disco da InnoDB. Per ulteriori informazioni, consulta Uso della tabella temporanea interna in MySQL nel Manuale di riferimento di MySQL.

Probabili cause di questo problema

Un aumento delle tabelle temporanee su disco indica l'uso di query complesse. Se la memoria configurata non è sufficiente per archiviare le tabelle temporanee in memoria, Aurora MySQL crea le tabelle su disco. Ciò può influire sulle prestazioni e aumentare le operazioni del disco.

Operazioni

Consigliamo azioni diverse a seconda delle cause degli approfondimenti.

  • Per Aurora MySQL versione 3, consigliamo di utilizzare il motore di archiviazione TempTable.

  • Ottimizza le query in modo da restituire meno dati selezionando solo le colonne necessarie.

    Se attivi lo schema delle prestazioni con tutti gli strumenti statement abilitati e temporizzati, puoi eseguire la query SYS.statements_with_temp_tables per recuperare l'elenco delle query che utilizzano le tabelle temporanee. Per ulteriori informazioni, consulta Prerequisiti per l'utilizzo dello schema sys nella documentazione di MySQL.

  • Prendi in considerazione l'indicizzazione delle colonne coinvolte nelle operazioni di ordinamento e raggruppamento.

  • Riscrivi le query per evitare le colonne BLOB e TEXT. Queste colonne utilizzano sempre il disco.

  • Ottimizza i parametri del database tmp_table_size e max_heap_table_size.

    Il valore predefinito di questi parametri è 16 MiB. Quando si utilizza il motore di archiviazione MEMORY per tabelle temporanee in memoria, la dimensione massima è definita dal valore tmp_table_size o max_heap_table_size, a seconda di quale sia il più piccolo. Quando viene raggiunta questa dimensione massima, MySQL converte automaticamente la tabella temporanea interna in memoria in una tabella temporanea interna di InnoDB su disco. Per ulteriori informazioni, consulta Uso del motore di archiviazione TempTable in Amazon RDS per MySQL e Amazon Aurora MySQL.

    Nota

    Quando si creano in modo esplicito tabelle MEMORY con CREATE TABLE, solo la variabile max_heap_table_size determina la dimensione massima di una tabella. Inoltre, non è prevista la conversione in un formato su disco.

Parametri rilevanti

A questo approfondimento sono correlati i seguenti parametri di Approfondimenti sulle prestazioni:

  • Created_tmp_disk_tables

  • Created_tmp_tables

Per ulteriori informazioni, consulta Created_tmp_disk_tables nella documentazione di MySQL.