Esta página descreve problemas conhecidos de alto uso do disco e oferece ajuda para a solução de problemas.
Os problemas conhecidos de alto uso do disco incluem o seguinte:
- Alto uso de arquivos
Temporary_filesno MySQL 8.0 e versões mais recentes. - Alto uso de arquivos
Othersno MySQL 8.0 e versões anteriores.
O consumo de arquivos temporários é categorizado em arquivos tmp_data em versões anteriores ao MySQL 8.0.
Métrica de detalhamento de armazenamento do MySQL
A principal métrica usada para monitorar o uso detalhado do disco é cloudsql.googleapis.com/database/disk/bytes_used_by_data_type. Essa métrica fornece um detalhamento do uso do disco da instância por tipo de dados, da seguinte maneira:
| Tipo de dado | Definição |
|---|---|
Binlog |
Armazenamento usado por registros binários do MySQL, essencial para recuperação pontual e replicação. |
Cloudsql_mysql_audit_log |
Armazenamento usado pelo registro de auditoria do Cloud SQL MySQL. |
Data |
Inclui tablespaces InnoDB principais (arquivos .ibd) e o tablespace do sistema (ibdata1). |
General_log |
Armazenamento usado pelo registro de consulta geral. |
General_tablespace |
Armazenamento usado pelo tablespace do sistema InnoDB, que consiste nos arquivos ibdata*. |
Last_sys_tablespace |
Armazenamento usado pelo tablespace mais recente. |
Others |
Inclui arquivos internos do sistema. |
Redo_log |
Armazenamento consumido por registros de refazer InnoDB usados para recuperação de falhas. |
Relaylog |
Armazenamento usado por registros de retransmissão em uma instância de réplica durante a replicação. |
Slow_log |
Armazenamento usado pelo registro de consulta lenta, se ativado e armazenado no disco. |
Temporary files |
Armazenamento explicitamente rastreado para arquivos temporários criados pelo MySQL. |
Temporary_space |
Armazenamento usado pelos arquivos temporários do sistema operacional no diretório /tmp. |
Tmp_data |
Dados temporários criados pelo MySQL durante operações como classificação e junção. |
Undo_log |
Armazenamento usado pelos registros de desfazer. |
Como localizar arquivos nas categorias Temporary_files e Others
Consultas de longa duração (como operações complexas JOIN, ORDER BY ou GROUP BY) criam arquivos temporários grandes no diretório do MySQL.
Para instâncias do MySQL que usam versões de manutenção lançadas a partir de abril de 2026, esses arquivos temporários são informados explicitamente na categoria Temporary_files.
Em versões anteriores, os arquivos temporários são informados na categoria Others.
Resolver problemas de alto uso do disco
Para resolver problemas de alto uso do disco causados por arquivos temporários grandes, siga estas etapas:
- Identifique consultas ativas de longa duração.
- Mitigação imediata.
- Usar Query Insights.
- Realize uma análise retrospectiva.
- Otimizar consultas.
- Configure o monitoramento e os alertas.
Identificar consultas ativas de longa duração
Problemas de alto uso do disco são causados com mais frequência por consultas de longa duração (como operações complexas JOIN, ORDER BY ou GROUP BY) que criam arquivos temporários enormes no diretório do MySQL. Esses arquivos temporários são categorizados em Temporary_files ou Others.
As instâncias do MySQL com novas versões de manutenção (versão r20260320.00_00 e mais recentes) têm a tabela INFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILES, que mostra os arquivos temporários criados por consultas de longa duração e que não estão vinculados (ou seja, os arquivos existem, mas não estão vinculados ao processo do MySQL) pelo MySQL.
Use a consulta a seguir para receber a consulta ativa de longa duração:
SELECT
otf.fd, otf.size, p.id, p.info, p.user
FROM
INFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILES otf
LEFT JOIN
performance_schema.processlist p
ON
otf.SESSION_ID = p.ID;
Exemplo de resposta:
+----+------------+------+----------------------------------+------+
| fd | size | id | info | user |
+----+------------+------+----------------------------------+------+
| 39 | 1670750208 | 8 | select * from t1 order by rand() | root |
| 40 | 1670750208 | 8 | select * from t1 order by rand() | root |
+----+------------+------+----------------------------------+------+
2 rows in set (0.00 sec)
Para as instâncias com versões de manutenção r20260320.00_00 e anteriores, use a consulta a seguir para receber a consulta ativa de longa duração:
SHOW FULL PROCESSLIST;
Na saída, procure as operações que costumam usar arquivos temporários de disco:
- Grandes operações
JOIN, especialmente sem índices adequados. - Operações complexas
ORDER BYouGROUP BYem grandes conjuntos de resultados. - Grandes operações
ALTER TABLE.
Mitigação imediata
Se uma consulta em execução for identificada como a origem do consumo de disco da investigação, você poderá encerrá-la para liberar o espaço do arquivo temporário associado.
Para encerrar a consulta, execute o seguinte comando:
KILL PROCESS_ID;
Substitua PROCESS_ID pelo ID do processo da consulta:
Para versões de manutenção
r20260320ou mais recentes, é possível recuperar o PROCESS_ID valor na coluna SESSION_ID daINFORMATION_SCHEMA.CLOUDSQL_OPEN_TEMP_FILEStabela.Para versões anteriores (versão
r20260117ou anterior) , é possível recuperar o PROCESS_ID valor na saída daSHOW FULL PROCESSLISToperação.
Após o encerramento de uma consulta responsável pelo consumo elevado de disco por arquivos temporários, pode levar até aproximadamente 5 minutos para que essas mudanças sejam registradas nas métricas de uso do disco.
Usar Query Insights
Recomendamos o uso do Query Insights para identificar e refinar consultas de desempenho lento.
Para mais informações, consulte Usar Query Insights para melhorar o desempenho da consulta.
Realizar uma análise retrospectiva
Quando o pico de uso diminuir, você poderá analisar os dados históricos para identificar a causa usando o seguinte:
Query Insights. Verifique se há consultas que possam ter criado arquivos temporários grandes. Examine as consultas listadas por resumo de consulta (incluindo métricas como tempo médio de execução, número de consultas e média de linhas verificadas e retornadas).
Slow_log. Ative oSlow_loge definalong_query_timecomo um limite adequado. Esse registro captura consultas de longa duração para análise e otimização.General_log. VerifiqueGeneral_log(se ativado) para consultas registradas durante a janela de incidentes que têm operaçõesJOINouSORTque podem ter gerado arquivos temporários grandes. Caso contrário, ative oGeneral_loge capture a consulta no próximo evento.Métricas do Cloud Monitoring. Analise as seguintes métricas:
cloudsql.googleapis.com/database/mysql/tmp_disk_tables_created_count: rastreia o número de tabelas temporárias criadas no disco, que geralmente são a causa de arquivos grandes não vinculados.cloudsql.googleapis.com/database/mysql/handler_operations_count: rastreia o número de operações que aumentam nesse período.cloudsql.googleapis.com/database/mysql/innodb/active_trx_total_time: rastreia as transações ativas por um período mais longo.
Um aumento dessas métricas que coincide com o pico de uso do disco sugere fortemente que as consultas que geram tabelas temporárias grandes foram a causa raiz.
Histórico de transações. Analise as seguintes métricas:
cloudsql.googleapis.com/database/mysql/innodb/history_list_length metric: um comprimento de lista de histórico alto pode ser causado por transações de longa duração que bloqueiam a limpeza dos registros de desfazer, o que também pode contribuir para problemas de uso do disco.cloudsql.googleapis.com/database/mysql/innodb/active_trx_longest_time: transações de longa duração durante o período de alto uso do disco.
Otimizar consultas
Depois que a análise de registros identificar as consultas específicas que causam picos de métricas, você poderá otimizá-las ou reescrevê-las para minimizar a geração de arquivos temporários extensos.
Para otimizar uma consulta, faça o seguinte:
- Adicione índices adequados.
- Refatore junções complexas ou classifique operações.
Para mais informações, consulte Ajuste de consultas.
Configurar o monitoramento e os alertas
Para evitar incidentes futuros causados pelo uso descontrolado do disco, especialmente devido a arquivos temporários gerados por consultas de longa duração, implemente o monitoramento e os alertas proativos usando o Monitoring.
É possível criar alertas para métricas que indicam alto consumo de recursos ou padrões de consulta conhecidos por gerar arquivos temporários grandes.
| Nome da métrica | Descrição | Limite de alerta recomendado |
|---|---|---|
cloudsql.googleapis.com/database/disk/utilization |
A porcentagem de espaço em disco alocado utilizado.
Essa métrica monitora o uso geral da capacidade do disco. |
Acima de 80% (sustentado por mais de 5 minutos) |
cloudsql.googleapis.com/database/disk/bytes_used |
O total de bytes de espaço em disco usado pela instância do banco de dados.
Essa métrica rastreia o crescimento absoluto do consumo de disco. |
Monitore em relação à métrica database/disk/quota. |
Para saber como configurar alertas e monitoramento para métricas do Cloud SQL, consulte Visão geral de alertas e Monitorar instâncias do Cloud SQL.