[英]Choice of MySQL table type for non-critical webapp data (MyISAM vs. InnoDB)
考虑这种情况,假设如下:
在所述假设下MyISAM的优点:
总而言之,我对MyISAM非常满意,但有一个例外。 在所述假设下,MyISAM有一个主要缺点,即表级锁定。 当UPDATE向经常读取的表运行时,所有读取都被阻止。 不用说,这会导致必须解决的主要性能问题。
我的问题是:
innodb_file_per_table
选项让它“更像”。 然而,InnoDB仍会将关键信息存储在其系统级数据文件中,并且您无法通过重命名数据库来重命名数据库,就像使用MyISAM一样。 您是否真的使用myisam和innodb表获取了性能指标? 根据我的经验,当你考虑从innodb获得的所有ACID好处时,速度上的差异并不是那么多。 只是单独锁定表会影响速度,因此innodb总体上会更快。
另请注意,myisam在插入时要快得多,而不是选择。 你只插入5%的时间...做数学。
你总是可以使用innodb做mysqldump,所以你的备份过程是一样的。
我知道有些项目使用镜像DB进行搜索。 它倾向于针对搜索进行优化,有时甚至可以在不同的机器上运行,只是为了隔离开销。
这里唯一的缺点是保持它们同步有点麻烦。 如果搜索表中的陈旧数据不是太麻烦,那么它可能是最好的选择。 如果性能是一个问题。
这不是我最喜欢的解决方案,但理论上它非常简单。
换句话说,我认为你一定要试试InnoDB并对应用程序的性能进行基准测试。 迁移非常简单,所以我没有理由不去尝试。 对我来说,InnoDB很长一段时间都是默认选择。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.