MySQL将大表更改为InnoDB

MySQL将大表更改为InnoDB,mysql,innodb,Mysql,Innodb,我有一个运行在CentOS上的MySQL服务器,它拥有一个大(>12GB)的数据库。由于性能原因,我被建议迁移到InnoDB,因为我们遇到了锁定,在服务器繁忙时依赖于DB的应用程序变得无响应 我一直在阅读,可以看到将表更改为InnoDB的ALTER命令可能需要很长时间,并在这个过程中影响服务器。据我所知,唯一需要的更改是使用以下命令: ALTER TABLE t ENGINE=InnoDB 我已经在测试服务器上运行了这个程序,它似乎完成得很好,在需要转换的最大表上大约需要26分钟 由于从未在生

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

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

ALTER TABLE t ENGINE=InnoDB
我已经在测试服务器上运行了这个程序,它似乎完成得很好,在需要转换的最大表上大约需要26分钟

由于从未在生产系统上运行过此功能,我有兴趣了解以下内容:

  • 为了利用InnoDB表的额外性能,建议对MySQL配置进行哪些更改?该服务器目前为InnoDB缓存分配了3GB的内存,并打算在安装额外的RAM后将其增加到15GB
  • 使用此更改,我还应该对服务器执行其他操作吗

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

    至于InnoDB的优化,我想大多数人都会同意InnoDB_buffer_pool_size是需要调整的最重要参数之一(通常人们将其设置为总可用内存的70-80%,但这不是一个神奇的数字)。不过,它不是唯一重要的配置变量,也没有神奇的run\u really\u fast设置。您还应该注意innodb_buffer_pool_实例(上对此主题进行了很好的讨论)


    另外,您一定要查看MySQL文档本身()中提供的提示。注意InnoDB命中率(DBA Stackexchange的Rolado对这个问题有很好的回答,例如,)并仔细分析缓慢的查询日志也是一个好主意。在这之后,我肯定会再次推荐大家看看Percona。他们的慢速查询分析器是一流的,在优化SQL性能时,它可以真正帮助您

    你是说?此外,还可以省去将来的一些麻烦,使用它。
    innodb\u buffer\u pool\u size
    绝对是决定性能的因素。如果没有SSD(RAID等),也可以使用SSD。每个表的文件可能会有所帮助,但会在具有高并发性的服务器上引入巨大的问题,所以我现在还不会更改这个问题。或者,为了提高性能,请查看这也是一个具有更高性能的替代品。@MarcusAdams是的,我指的是InnoDB缓冲池,谢谢。我正在迁移到带有SSD缓存的新服务器,但目前需要让旧服务器运行更长时间