首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不优化MySQL数据库?

不优化MySQL数据库?
EN

Database Administration用户
提问于 2016-01-14 17:42:26
回答 2查看 127关注 0票数 0

我希望在大型生产MySQL数据库(V5.0)上运行ANALYZE和优化表,以提高性能。

但是,由于这会导致停机时间未知,所以我想先在一个单独的实例上测试它。我想在测试数据库上运行一些测试查询,然后优化它,然后再运行测试查询。

复制MySQL数据库同时保持表和索引数据未经优化的物理存储是可能的吗?

EN

回答 2

Database Administration用户

发布于 2016-01-15 01:45:48

不是的。不要期望使用OPTIMIZE TABLE提高性能(如果有的话)。

ANALYZE TABLE在MyISAM上速度很慢,你应该远离它的引擎。它在InnoDB中速度很快。这是几乎从来不需要在任何一个引擎。只有当您有一个无法由人进行理性分析的特定查询时,您才应该考虑ANALYZE

OPTIMIZE TABLE将重建表。这需要在持续时间内阻止对它的所有写入。

回到你的最后一个问题。转储数据(而不是文件)将为您提供一些可以加载到另一台服务器进行测试的东西。然而,转储本身涉及某种程度的锁定。这取决于您正在使用的引擎以及是否需要“一致”转储。

SHOW TABLE STATUS会给你一个关于Data_free的线索。对于MyISAM来说,这就是OPTIMIZE可以收回多少空间。但即便是大量的数据也不一定意味着业绩的大幅提升。对于InnoDB,Data_free的意义较小,其意义取决于创建表时innodb_file_per_table的值。

票数 1
EN

Database Administration用户

发布于 2016-02-01 15:00:08

如果您的表是无害的,您可以使用https://www.percona.com/doc/percona-toolkit/2.2/pt-online-schema-change.html,这将优化表而不阻塞它。

它以块的形式将表复制到aovid锁中,并设置触发器,以便在优化时发生的所有更改中更新复制表。

您可以运行干式运行,以确保它的工作之前,做它的现场。

票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/126273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档