我尝试使用 PHPMyAdmin 为大约有 4,000 行的表 (MyISAM) 中的日期字段添加索引。PHPMyadmin 冻结,最后超时。现在,即使重新启动服务器,MySQL (MariaDB) 服务器的 CPU 占用率仍达到 100%,并且几乎没有响应。例如,查询返回小表中的 400 行需要 48 秒,而通常不到 1 秒。
自从我尝试这次更新已经过去了至少 15-20 分钟。
Show ProcessList;
显示几个等待表锁的查询,但没有显示UPDATE TABLE
添加索引的查询。
添加索引后,通常需要一些时间来建立索引,并且在此期间 MySQL 通常非常迟钝吗?我该如何检查状态或停止该过程?
mysqlcheck
报告所有表“OK”。
解决方案: 我在 DateTime 字段上添加了索引其他我正在与 MyISAM 表连接此表(它有大约 25k 行)。由于某种原因,该索引阻止了查询完成 - 不确定发生了什么。我删除了索引,一切都很好。两个表都检查正常,所以没有损坏。不确定有人如何在不一次回溯先前的架构修改的情况下跟踪此类问题。没有相关的错误消息指向该问题。
答案1
回到 5.5 天前,添加索引需要重建表及其所有索引。其中包括您的 FULLTEXT 索引。重建它是一项相当耗费 CPU 的苦差事。
较新的版本具有适用于 InnoDB 的 FULLTEXT。
新版本有办法添加索引而不需要重建其他所有内容。
ETC。