Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Arquivo de chave incorreto para a tabela '/tmp/#sql_3c51_0.MYI' tente repará-lo


O problema é causado pela falta de espaço em disco na pasta /tmp. O volume /tmp é usado em consultas que exigem a criação de tabelas temporárias. Essas tabelas temporárias estão no formato MyISAM mesmo se a consulta estiver usando apenas tabelas com InnoDB.

Aqui estão algumas soluções:
  • otimize a consulta para que ela não crie tabelas temporárias (reescreva a consulta, divida-a em várias consultas ou adicione índices adequados, analise o plano de execução com pt-query-digest e EXPLAIN <query> ) Veja este Artigo Percona sobre tabelas temporárias .
  • otimize o MySQL para que ele não crie tabelas temporárias (sort_buffer_size, join_buffer_size). Veja:https://dba.stackexchange.com/questions/53201/mysql-creates-temporary-tables-on-disk-how-do-i-stop-it
  • diminua as mesas. Se possível, exclua as linhas desnecessárias
  • use SELECT table1.col1, table2,col1 ... em vez de select * para usar apenas as colunas que você precisa na consulta, para gerar tabelas temporárias menores
  • use tipos de dados que ocupam menos espaço
  • adicione mais espaço em disco no volume onde reside a pasta /tmp
  • altere o usuário da pasta temporária pelo mysql definindo o TMPDIR variável de ambiente antes da inicialização do mysqld. Ponto TMPDIR para uma pasta em um volume de disco que tenha mais espaço livre. Você também pode usar tmpdir opção em /etc/my.cnf ou --tmpdir na linha de comando do serviço mysqld. Veja:B.5.3.5 Onde o MySQL armazena arquivos temporários