Delirios de un Informático

Cómo acelerar myisamchk

Cuando se tiene una tabla MyISAM dañada de 5 GB y 15 millones de registros, repararla puede ser una tarea que dure dias. Se debe principalmente a que la reparación se realiza mediante Repair with keycache en vez de Repair by sorting, infinitamente más rápido. Si se ejecuta el primero es porque el segundo suele fallar al no tener unos parámetros de memoria adecuados, resultando en un error como este:

myisamchk: error: myisam_sort_buffer_size is too small

Tras mucho trastear, mi solución resultó ser la siguiente:

myisamchk --sort_buffer_size=256M --read_buffer_size=2M
          --write_buffer_size=1M  --sort-recover tabla.MYI

Esto hace que en vez de procesar 1.000 consultas por segundo procese 100.000 con el evidente ahorro de tiempo y gasto de energía.