MySQL将大表更改为InnoDB

时间:2014-12-16 14:29:20

标签: mysql innodb

我在CentOS上运行一个MySQL服务器,它有一个大的(> 12GB)数据库。出于性能原因,我被建议转移到InnoDB,因为我们遇到了锁定,当服务器忙时,依赖于数据库的应用程序变得没有响应。

我一直在阅读并且可以看到将表更改为InnoDB的ALTER命令可能需要很长时间并且在此过程中锤击服务器。据我所知,唯一需要改变的是使用以下命令:

ALTER TABLE t ENGINE=InnoDB

我在测试服务器上运行它,它似乎完成得很好,在需要转换的最大表上花了大约26分钟。

从未在生产系统上运行此操作我很想知道以下内容:

  1. 建议对MySQL配置进行哪些更改以利用InnoDB表的其他性能?服务器目前有3GB分配给InnoDB缓存 - 一旦安装了额外的RAM,就考虑将其增加到15GB。
  2. 我应该对服务器进行此更改吗?

1 个答案:

答案 0 :(得分:1)

我真的建议使用Percona MySQL或MariaDB。两者都有可以帮助您充分利用InnoDB的工具,以及一些帮助您进一步诊断和优化数据库的工具(例如,Percona的在线模式更改工具可用于在不停机的情况下更改您的表)。

就InnoDB的优化而言,我认为大多数人会同意innodb_buffer_pool_size是调整最重要的参数之一(通常人们将其设置为总可用内存的70-80%,但这不是一个神奇的数字)。但它并不是唯一重要的配置变量,并且实际上没有魔术run_really_fast设置。你还应该注意innodb_buffer_pool_instances(在https://dba.stackexchange.com/questions/194/how-do-you-tune-mysql-for-a-heavy-innodb-workload上对这个话题进行了很好的讨论)

另外,您一定要查看MySQL文档本身提供的提示(http://dev.mysql.com/doc/refman/5.6/en/optimizing-innodb.html)。注意你的InnoDB命中率(Rolado over DBA Stackexchange在这个主题上有很好的答案,例如https://dba.stackexchange.com/questions/65341/innodb-buffer-pool-hit-rate)并仔细分析你的慢查询日志也是一个好主意。接下来,我肯定会建议再看看Percona。他们的慢查询分析器是一流的,在优化SQL性能方面可以真正为您提供支持。