我在CentOS上运行一个MySQL服务器,它有一个大的(> 12GB)数据库。出于性能原因,我被建议转移到InnoDB,因为我们遇到了锁定,当服务器忙时,依赖于数据库的应用程序变得没有响应。
我一直在阅读并且可以看到将表更改为InnoDB的ALTER命令可能需要很长时间并且在此过程中锤击服务器。据我所知,唯一需要改变的是使用以下命令:
ALTER TABLE t ENGINE=InnoDB
我在测试服务器上运行它,它似乎完成得很好,在需要转换的最大表上花了大约26分钟。
从未在生产系统上运行此操作我很想知道以下内容:
答案 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性能方面可以真正为您提供支持。