OPTIMIZE TABLE优化的问题

rczjp 2011-06-07 01:54:15
OPTIMIZE TABLE A,B,C的时候,有的时候就一直卡住不动,没有相应了,我退出来,这个表就坏了
请问是怎么回事?
...全文
671 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
rucypli 2011-06-07
  • 打赏
  • 举报
回复
对于MyISAM表,OPTIMIZE TABLE按如下方式操作:

1. 如果表已经删除或分解了行,则修复表。

2. 如果未对索引页进行分类,则进行分类。

3. 如果表的统计数据没有更新(并且通过对索引进行分类不能实现修复),则进行更新。

对于BDB表,OPTIMIZE TABLE目前被映射到ANALYZE TABLE上。对于InnoDB表,OPTIMIZE TABLE被映射到ALTER TABLE上,这会重建表。重建操作能更新索引统计数据并释放成簇索引中的未使用的空间。请参见13.5.2.1节,“ANALYZE TABLE语法”。
rucypli 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 rczjp 的回复:]
另外客服端在运行远程的优化,客户端突然停电了,服务器端没有停电,请问优化还在继续执行吗?
[/Quote]
取消
ACMAIN_CHM 2011-06-07
  • 打赏
  • 举报
回复
没什么其它好办法。 总是要锁表的。

你可以另外创建一张新表,然后复制原表中数据到新表,之后再删除原表,并将新表改名为原表。 但这个之间的一些操作肯定要锁表以保证数据的一致性。
rczjp 2011-06-07
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 wwwwb 的回复:]

日志中有无信息
[/Quote]日志没有注意看了,正常情况是10多秒就可以优化完全,有时如果卡住,那么就会一直不响应,没有办法只能退出,而一旦退出就必须要修复表了,很麻烦

[Quote=引用 3 楼 acmain_chm 的回复:]

OPTIMIZE是重构整个表,如果这个表很大的话,的确会需要比较长的时间。 中途如果断电,或者其它异常则会导至整文件结构的异常从而导致表无法正常使用。 无法继续再OPTIMIZE,需要CHECK或者REPAIR一下。
[/Quote]嗯,数据多有时时间长点,不过有时是卡死在那没有反应了
由于更新操作很频繁,所以想优化下索引,有其他方法解决吗?另外 OPTIMIZE会锁表,感觉也不好
ACMAIN_CHM 2011-06-07
  • 打赏
  • 举报
回复
OPTIMIZE是重构整个表,如果这个表很大的话,的确会需要比较长的时间。 中途如果断电,或者其它异常则会导至整文件结构的异常从而导致表无法正常使用。 无法继续再OPTIMIZE,需要CHECK或者REPAIR一下。
wwwwb 2011-06-07
  • 打赏
  • 举报
回复
日志中有无信息
rczjp 2011-06-07
  • 打赏
  • 举报
回复
另外客服端在运行远程的优化,客户端突然停电了,服务器端没有停电,请问优化还在继续执行吗?

57,062

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧