• ADADADADAD

    回收mysql表的碎片[ mysql数据库 ]

    mysql数据库 时间:2024-12-03 12:11:13

    作者:文/会员上传

    简介:

    由于操作人员大量的删除了relationship表的数据达2千万行,但是mysql并不自动回收空间,所以决定做碎片整理(先测试):myisamchk -r relationship我是在mysql运行下做的,结果做完后查

    以下为本文的正文内容,内容仅供参考!本站为公益性网站,复制本文以及下载DOC文档全部免费。

    由于操作人员大量的删除了relationship表的数据达2千万行,但是mysql并不自动回收空间,所以决定做碎片整理(先测试):

    myisamchk -r relationship

    我是在mysql运行下做的,结果做完后查询的时候出现下面的问题:

    ERROR 1030 (00000): Got error 127 from table handler

    这个问题很郁闷,应该不会出现问题的呀,后来查阅资料发现了问题(http://www.xinlian.net/school/pc/MySQLinstall/):

    如果你用--skip-locking运行mysqld(它在一些系统上是缺省的,如Linux),当
    mysqld正在使用同一个表时,你不能可靠地使用myisamchk检查一张表。如果你能
    肯定在你运行myisamchk时没有人通过mysqld正在存取表,在你开始检查表之前,
    你仅需做mysqladmin flush-tables。如果你不能保证, 那么当你检查表时,你必
    须停掉mysqld。如果你在mysqld正在更新表时运行myisamchk,你可能得到一个表
    已破坏的警告,即使它没有。

    如果你没使用--skip-locking,你能在任何时间使用myisamchk检查表。当你这样
    时,所有试图更新表的客户在继续前将等到myisamchk就绪。

    如果你使用myisamchk修复或优化表,你必须总是保证mysqld服务器不在使用表(如
    果你正在使用--skip-locking,这也适用)。如果你不停掉mysqld,在你运行
    myisamchk前,你至少应该做一个mysqladmin flush-tables。

    而我的数据库恰好在linux下,并且是skip-locking启动的,就出现了这个问题!

    1)这个命令也可以停止mysql后再做,就不会出现这个问题

    2)也可以在线做后重启数据库

    3)也可以先运行mysqladmin flush-tables后再执行这个命令,也不会出现这个问题!

    [@more@]
    回收mysql表的碎片.docx

    将本文的Word文档下载到电脑

    推荐度:

    下载
    热门标签: mysql表sql表