首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在没有分区的大型mysql表上优化表

问在没有分区的大型mysql表上优化表
EN

Stack Overflow用户
提问于 2012-06-09 12:28:49
回答 2查看 489关注 0票数 0

我们有一个非常大的Mysql表,它是MyISAM。每当我们运行optimize table命令时,表都会被锁定,并且性能会受到影响。表不是只读的,因此创建临时表和交换临时表可能不起作用。我们也不能对表进行分区。

是否有其他方法/工具可以在不降低性能的情况下实现优化表功能。任何建议都会有很大帮助。

提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2012-06-09 18:13:29

http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html

对于InnoDB表,OPTIMIZE TABLE映射到ALTER TABLE,这将重新构建表(...)

因此,我不期望在切换到InnoDB方面有任何改进,正如Quassnoi可能建议的那样。

根据定义,优化表需要对表进行一些独占访问,因此在优化过程中性能会降低

然而,可能需要采取一些步骤来减少优化所需的时间,这取决于您的表有多“庞大”:

  • 如果您的表有许多字段,则可能需要对表进行规范化。相反,您可能希望通过将列分散到多个“更窄”的表中来反规范化您的表,并建立一对一关系。
  • 如果您的表有许多记录,请在应用程序代码中实现“手动”分区。一个简单的步骤是创建一个保存很少更新的记录的“存档”表。这样,您只需要优化一组较小的记录(非存档表)。
票数 0
EN

Stack Overflow用户

发布于 2015-08-05 17:32:05

optimize table命令锁表,会降低性能。

你下载percona工具包命令来优化表。

在优化表期间,此命令不会锁定表。

使用下面的链接:

https://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html

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

https://stackoverflow.com/questions/10958358

复制
相关文章

相似问题

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