MySQL停止运行OPTIMIZE命令?

4
大约1小时前,我开始对一个大小约为20G,具有250M行的MyISAM表进行MySQL优化。目前正在创建db_name.TMD文件,该文件大小为1G并且还在增长。
据我所知,MySQL现在正在重新创建优化后的表副本,如果我的假设是正确的,杀死优化进程不应该损坏原始数据库吧?另外,如何仅终止优化进程?如果磁盘空间在优化过程中用尽会发生什么?
顺便说一句,我刚刚检查了进程列表和当前状态:Repair with keycache。好的,更多问题:我开始优化的表具有10442MB的.MYD文件和9319M的.MYI文件,优化过程将占用多少空间?.MYD文件大小还是MYD + MYI文件大小?

你为什么要运行“OPTIMIZE”?它几乎从不需要。 - Rick James
有一个设置可以让它使用“排序修复”。这应该会更快(但不能防止磁盘空间耗尽)。 - Rick James
在第二台机器上,我更改了设置,并进行了排序修复,只花费了约1小时。至于为什么我运行优化,纯粹是出于对空间优化的兴趣。它确实从MYI文件中节省了约1.5G的空间。 - Alex K
一个20GB的表需要大约20GB的额外磁盘空间来执行“OPTIMIZE”操作;可能更多,也可能更少。这就像进度条一样--如果不完成整个任务,它就无法精确显示。 - Rick James
1.5 / 9.3 已保存 -- (1) 随着插入更多行,您将失去空间,(2) 查询不会加快速度。(3) 这个努力值得吗? - Rick James
1个回答

5

过去我曾多次停止优化过程,没有出现不良影响。然而,我会在备份可用的情况下停止操作以应对问题。

为了停止操作,我使用了KILL process_id,其中process_id来自于SHOW PROCESSLIST的结果。

优化所需的空间量取决于表中标记为删除的行数。


我也停止了这个进程,因为我的空间用完了,但是数据库被标记为崩溃。现在正在拷贝到另一台有很多空闲空间的计算机上进行修复和优化。 - Alex K

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接