【问题标题】:mysql optimize very large tablemysql优化非常大的表
【发布时间】:2011-10-21 05:31:51
【问题描述】:

我有一个大约 15Gb 的 MyIsam 表。 我已经从中删除了大约一半的行,删除查询大约需要 10 个小时。 现在我不敢开始optimize table,因为我不知道要花多长时间。 如果你有过这么大桌子的经验,可以和我分享一下吗。

PS 在删除过程之后,查询“select * from table limit 0,30”需要数年时间。 optimize table 有帮助吗?

需要10多个小时吗?

如果我中断“优化表”查询会发生什么?

【问题讨论】:

    标签: mysql optimization myisam


    【解决方案1】:

    优化表将有助于减小大小(索引将被重新计算等) 如果你删除了一半的行,你应该优化你的表。在我的公司,我们有大约 2-3 GB 的表格。 Optmize 不像删除那么重要。

    如果您希望查询更快,请优化您的表。



    从大表中删除许多行的另一个提示: 您可以在不使用任何删除命令的情况下执行此操作。

    选择不删除的行到与原表结构相同的空表中:

    INSERT INTO t_copy SELECT * FROM t WHERE ... ;

    使用 RENAME TABLE 以原子方式将原始表移开,并将副本重命名为原始名称:

    重命名表 t 到 t_old,t_copy 到 t;

    删除原表:

    删除表 t_old;

    【讨论】:

    • 请注意,在使用LOCK TABLES 时(以确保在运行操作时不会发生任何变化),您不能使用RENAME TABLE。你想要ALTER TABLE,请参阅stackoverflow.com/a/36247833/1531580。
    猜你喜欢
    • 2023-04-05
    • 2012-02-08
    • 1970-01-01
    • 1970-01-01
    • 2011-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多