Tengo una tabla MySQL que utiliza el motor MyISAM con 6 columnas INT, 1 SMALLINT, 2 columnas TINYINT y 1 columna FLOAT. Tiene miles de millones de filas (el archivo de datos es de 100 GB). Intentaba indexar en todos de las columnas habilitando las teclas, pero eso nunca sucedió. Tratar "myisamchk -r nombreTabla" dio el siguiente error:reparación/indexación de tablas grandes y myisam_sort_buffer_size
- recovering (with sort) MyISAM-table 'tableName'
Data records: 662929483
- Fixing index 1
myisamchk: error: myisam_sort_buffer_size is too small
MyISAM-table 'tableName' is not fixed because of errors
Try fixing it by using the --safe-recover (-o), the --force (-f) option or by not using the --quick (-q) flag
El uso de "demyisamchk -rov nombreTabla" en lugar lleva por siempre de nuevo (presumiblemente porque está utilizando el método keycache, no el método para ordenar).
¿No tiene sentido aumentar myisam_sort_buffer_size en este caso? (La respuesta a myisam_sort_buffer_size vs sort_buffer_size sugiere que aumentar el valor nunca tiene sentido). La máquina tiene 32 GB de RAM.
(lo ideal es?) El valor sort_buffer_size debe ser capaz de mantener el mayor índice de + algo de sobrecarga - no la suma de todos los índices, pero el tamaño de la más grande. He experimentado fallas de segmentación cuando el buffer no era lo suficientemente grande. – user3127882