一个表由于长期插入删除,应该造成了很多空洞,碎片!
在优化之前,我想看看它在这方面的具体指标,如何看?

解决方案 »

  1.   

    http://www.txdnet.cn/essay/view.jsp?tid=1257868519718&cid=2
    希望这篇文章对你有帮助
      

  2.   

    这个很难,一般是直接定时安装 optimize table脚本。
      

  3.   


    恢复和整理磁盘空间以及数据碎片
        optimize table <tb_name>;        --在MySQL Command Line Client执行
        myisamchk [-a | --analyze] [- | --...] <tbfile_path> --在OS Command window执行,文件路径及文件名可以使用通配符
                 [-a]   --通过分析键值的分布改进表联结性能
                 [-s | -ss] --沉默模式。当错误发生时仅写输出,-ss表示非常沉默
                 [-r]   --恢复模式。可修复几乎所有一切,除非唯一的键不是唯一
                 [-d]   --打印出关于表的一些信息
                 [-w]   --如果表被锁定,等待
                 [-e]   --非常彻底地检查表。这仅在极端情况下是必要的
                 [-v]   --冗长模式。打印更多的信息。通常与-d和-e一起使用。为了更冗长,使用-v多次(-vv, -vvv)
                 ...   --其他选项略
        常用选项示例:
        myisamchk *.MYI | myisamchk -a *.MYI | myisamchk -d -v *.MYI | myisamchk -s *.MYI
        OPTIMIZE当前只能用于MyISAM和BDB表,MYISAMCHK只能用于MyISAM表, ISAM表使用isamchk
        MYISAMCHK比OPTIMIZE速度更快更可靠
        对于InnoDB类型的表整理可以通过导出表然后删除原表重新导入的方式,也可以通过将表类型改变为 MyISAM 然后再改为 InnoDB 的方式解决。