将MyISAM转换为InnoDB.有利?后果是什么?

ste*_*tef 7 mysql myisam innodb

我们正在运行一个社交网站,记录每个成员的行为(包括访问其他成员的页面); 这涉及到db的大量写入.这些操作存储在MyISAM表中,并且由于某些东西开始对CPU征税,我首先想到的是MyISAM的表锁定会对CPU造成这种压力.

  • 只有读取和写入,没有对此表的更新.我认为这个表的读写之间的平衡大约是50/50,因此InnoDB会是更好的选择吗?
  • 如果我想将表更改为InnoDB并且我们不使用外键约束,事务或全文索引 - 我是否需要担心什么?

Mar*_*rkR 7

尽管在其他线程(MyISAM与InnoDB)中讨论了其使用的任何优点/缺点,但迁移是一个非常重要的过程.

考虑

  • 在可能的情况下,功能性地测试与数据库通信的所有组件 - 差异引擎具有不同的语义
  • 尽可能多地运行性能测试 - 有些事情可能会改善,有些可能会更糟糕.一个众所周知的例子是大表上的SELECT COUNT(*).
  • 检查所有代码是否会优雅地处理死锁 - 您可以在不明确使用事务的情况下获取它们
  • 估算转换所需的空间使用量 - 在非生产环境中测试.

毫无疑问,您需要在大型软件平台中进行更改; 这没关系,但看到你(希望)有很多自动测试覆盖率,改变应该是可以接受的.

PS:如果"某事开始对CPU征税",那么你应该a)在非生产环境中找出什么,b)在非生产环境中尝试各种选项来减少它.当你没有完全分析问题时,你不应该盲目地开始做诸如更改数据库引擎之类的重大事情.

所有性能测试都应该在非生产环境中完成,具有类似生产的数据和生产级硬件.否则很难正确解释结果.