我正在尝试优化一个很久没有优化过的表。它有大约 250 万行,1.3 GB 的数据和 152 MB 的索引。我大约 15 分钟前开始优化它,但我不知道需要多长时间。
该服务器相当强大(四核至强处理器,4GB RAM),并且具有 500MB 的 innodb 缓冲池大小。
我是否应该预计这需要几分钟、几小时还是几天?
答案1
答案显然是 1 小时 20 分钟。我不确定这是“正常”时间还是由于我的设置效率低下而延迟。
答案2
这在很大程度上取决于表中数据的状态和您的硬件,但 innodb 修改表操作的典型上限是复制整个表所需的时间 + 对索引进行排序所需的时间。
您是否确定磁盘空间没有耗尽?
答案3
我还不确定为什么,但有时这样的操作需要几个小时。我亲眼目睹过一次长达 2 小时的运行,也听说过一次长达 8 小时的运行。要更改表,MySQL 不仅要将其复制到新表,还要重新索引。这通常是它花费时间最多的地方。如果您检查 PROCESSLIST,它很可能会说它正在创建索引或对索引进行排序。
这并不正常,但不幸的是,它确实发生了。