sql >> Base de Datos >  >> RDS >> Mysql

Archivo de clave incorrecto para la tabla '/tmp/#sql_3c51_0.MYI' intente repararlo

El problema se debe a la falta de espacio en disco en la carpeta /tmp. El volumen /tmp se usa en consultas que requieren crear tablas temporales. Estas tablas temporales están en formato MyISAM incluso si la consulta usa solo tablas con InnoDB.

Aquí hay algunas soluciones:

  • optimice la consulta para que no cree tablas temporales (reescriba la consulta, divídala en varias consultas o agregue índices adecuados, analice el plan de ejecución con pt-query-digest y EXPLAIN <query> ) Vea esto Artículo de Percona sobre tablas temporales .
  • optimice MySQL para que no cree tablas temporales (sort_buffer_size, join_buffer_size). Ver:https://dba.stackexchange.com/questions/53201/mysql-crea-temporary-tables-on-disk-how-do-i-stop-it
  • haga las mesas más pequeñas. Si es posible, elimine las filas innecesarias
  • use SELECT table1.col1, table2,col1 ... en lugar de select * para usar solo las columnas que necesita en la consulta, para generar tablas temporales más pequeñas
  • usar tipos de datos que ocupen menos espacio
  • agregue más espacio en disco en el volumen donde reside la carpeta /tmp
  • cambie el usuario de la carpeta temporal por mysql configurando el TMPDIR variable de entorno antes del inicio de mysqld. Punto TMPDIR a una carpeta en un volumen de disco que tenga más espacio libre. También puede usar tmpdir opción en /etc/my.cnf o --tmpdir en la línea de comando del servicio mysqld. Consulte:B.5.3.5 Dónde almacena MySQL los archivos temporales