

# O banco de dados está criando tabelas temporárias no disco
<a name="proactive-insights.temp-tables"></a>

Seu uso recente de tabelas temporárias em disco aumentou significativamente, até *porcentagem*. O banco de dados está criando cerca de *número* tabelas temporárias por segundo. Isso pode afetar a performance e aumentar as operações no disco em *instância de banco de dados*.

**Topics**
+ [Versões compatíveis do mecanismo](#proactive-insights.temp-tables.context.supported)
+ [Contexto](#proactive-insights.temp-tables.context)
+ [Causas prováveis desse problema](#proactive-insights.temp-tables.causes)
+ [Ações](#proactive-insights.temp-tables.actions)
+ [Métricas relevantes](#proactive-insights.temp-tables.metrics)

## Versões compatíveis do mecanismo
<a name="proactive-insights.temp-tables.context.supported"></a>

Essas informações de insights são compatíveis com todas as versões do Aurora MySQL.

## Contexto
<a name="proactive-insights.temp-tables.context"></a>

Às vezes, o servidor MySQL precisa criar uma tabela temporária interna ao processar uma consulta. O Aurora MySQL pode conter uma tabela temporária interna na memória, onde ela pode ser processada pelo mecanismo de armazenamento TempTable ou MEMORY, ou armazenada em disco pelo InnoDB. Para obter mais informações, consulte [Uso de tabela temporária interna no MySQL](https://dev.mysql.com/doc/refman/5.6/en/internal-temporary-tables.html) no *Manual de referência do MySQL*.

## Causas prováveis desse problema
<a name="proactive-insights.temp-tables.causes"></a>

Um aumento nas tabelas temporárias em disco indica o uso de consultas complexas. Se a memória configurada for insuficiente para armazenar tabelas temporárias na memória, o Aurora MySQL criará as tabelas no disco. Isso pode afetar a performance e aumentar as operações no disco.

## Ações
<a name="proactive-insights.temp-tables.actions"></a>

Recomendamos ações distintas dependendo dos motivos do insight.
+ Para o Aurora MySQL versão 3, recomendamos que você use o mecanismo de armazenamento TempTable.
+ Otimize suas consultas para retornar menos dados selecionando somente as colunas necessárias.

  Se você ativar o esquema de performance com todos os instrumentos `statement` habilitados e cronometrados, poderá consultar `SYS.statements_with_temp_tables` para recuperar a lista de consultas que usam tabelas temporárias. Para obter mais informações, consulte [Pré-requisitos para usar o esquema sys](https://dev.mysql.com/doc/refman/8.0/en/sys-schema-prerequisites.html) na documentação do MySQL.
+ Considere indexar colunas envolvidas em operações de classificação e agrupamento.
+ Reescreva suas consultas para evitar as colunas `BLOB` e `TEXT`. Essas colunas sempre usam o disco.
+ Ajuste os seguintes parâmetros de banco de dados: `tmp_table_size` e `max_heap_table_size`.

  O valor padrão para esses parâmetros é 16 MiB. Ao usar o mecanismo de armazenamento MEMORY para tabelas temporárias na memória, o tamanho máximo delas é definido pelo valor `tmp_table_size` ou `max_heap_table_size`, o que for menor. Quando esse tamanho máximo é atingido, o MySQL converte automaticamente a tabela temporária interna na memória em uma tabela temporária interna em disco do InnoDB. Para obter mais informações, consulte [Usar o mecanismo de armazenamento TempTable no Amazon RDS para MySQL e Amazon Aurora MySQL](https://aws.amazon.com/blogs/database/use-the-temptable-storage-engine-on-amazon-rds-for-mysql-and-amazon-aurora-mysql/).
**nota**  
Ao criar explicitamente tabelas MEMORY com CREATE TABLE, somente a variável `max_heap_table_size` determina o tamanho máximo até o qual uma tabela pode crescer. Também não há conversão para um formato em disco.

## Métricas relevantes
<a name="proactive-insights.temp-tables.metrics"></a>

As seguintes métricas do recurso Insights de Performance estão relacionadas a esse insight:
+ Created\$1tmp\$1disk\$1tables
+ Created\$1tmp\$1tables

Para obter mais informações, consulte [Created\$1tmp\$1disk\$1tables](https://dev.mysql.com/doc/refman/8.0/en/server-status-variables.html#statvar_Created_tmp_disk_tables) na documentação do MySQL.