我有一个使用 MyISAM 引擎的 MySQL 表,其中包含 6 个 INT 列、1 个 SMALLINT、2 个 TINYINT 和 1 个 FLOAT 列。它有数十亿行(数据文件为 100GB)。我试图通过启用键来索引所有列,但这从未发生过。尝试“myisamchk -r tableName ”出现以下错误:
- 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
使用“myisamchk -rov tableName ”反而需要永远(大概是因为它使用的是keycache方法,而不是sort方法)。
在这种情况下增加 myisam_sort_buffer_size 是否没有意义(myisam_sort_buffer_size 与 sort_buffer_size的答案表明增加该值永远没有意义)。该机器具有 32GB 的 RAM。