【发布时间】:2015-02-14 21:35:00
【问题描述】:
我有一个在 CentOS 上运行的 MySQL 服务器,其中包含一个大型 (>12GB) 数据库。出于性能原因,我被建议迁移到 InnoDB,因为我们遇到了锁定,即依赖 DB 的应用程序在服务器繁忙时变得无响应。
我一直在阅读,可以看到将表更改为 InnoDB 的 ALTER 命令可能需要很长时间,并且在此过程中会影响服务器。据我所知,唯一需要更改的是使用以下命令:
ALTER TABLE t ENGINE=InnoDB
我已经在测试服务器上运行了它,它似乎完成得很好,在需要转换的最大表上大约需要 26 分钟。
我从来没有在生产系统上运行过这个,我有兴趣了解以下内容:
- 建议对 MySQL 配置进行哪些更改以利用 InnoDB 表的额外性能?服务器当前有 3GB 分配给 InnoDB 缓存 - 正在考虑在安装额外 RAM 后将其增加到 15GB。
- 我还应该对服务器进行此更改吗?
【问题讨论】:
-
你的意思是InnoDB buffer pool?另外,为自己省去一些未来的麻烦,并使用file per table。
-
innodb_buffer_pool_size绝对是控制性能的因素。如果您没有 SSD(RAID 等),也可以使用 SSD。每个表的文件可能会有所帮助,但会在具有高并发性的服务器上引入巨大的问题,因此我暂时不会更改该问题。或者,为了提高性能 - 请查看 TokuDB,它也是一个具有更高性能的替代品。 -
@MarcusAdams 是的,我确实是指 InnoDB 缓冲池,谢谢。我正在迁移到具有 SSD 缓存的新服务器,但目前需要让旧服务器运行更长时间