我们有一个非常大的 Mysql 表,它是 MyISAM。每当我们运行优化表命令时,表就会被锁定并且性能会受到影响。该表不是只读的,因此创建临时表并交换它们可能无法正常工作。我们也无法对表进行分区。
有没有其他方法/工具可以在不降低性能的情况下优化表功能。任何建议都会有很大帮助。
提前致谢。
我们有一个非常大的 Mysql 表,它是 MyISAM。每当我们运行优化表命令时,表就会被锁定并且性能会受到影响。该表不是只读的,因此创建临时表并交换它们可能无法正常工作。我们也无法对表进行分区。
有没有其他方法/工具可以在不降低性能的情况下优化表功能。任何建议都会有很大帮助。
提前致谢。
http://dev.mysql.com/doc/refman/5.5/en/optimize-table.html
对于 InnoDB 表,OPTIMIZE TABLE 映射到 ALTER TABLE,它会重建表 (...)
因此,正如 Quassnoi 可能暗示的那样,我不希望在切换到 InnoDB 方面有任何改进。
根据定义,OPTIMIZE TABLE 需要对表进行一些独占访问,因此在 OPTIMIZE'ation 期间性能下降
不过,可能需要采取一些措施来减少 OPTIMIZE 所花费的时间,具体取决于您的表如何“巨大”:
优化表命令锁定表,它降低了性能。
你下载 percona 工具包命令来优化表。
此命令在优化表期间不锁定表。
使用以下链接:
https://www.percona.com/doc/percona-toolkit/2.1/pt-online-schema-change.html