MySQL引擎的区别

显然,InnoDB和MyISAM的选择取决于你的情况,但默认推荐InnoDB。

对于扩展,InnoDB从最重要的事情开始。
它支持交易。
我们去年做的一个融资项目就是靠它的 ACID 特性来生存的。
另外,行级锁可以在高对比度写入时省去很多问题,但需要注意的是,任何索引修改都不会闯入表锁。
还有一点就是它不缓存表行数,所以在做报表统计的时候不得不增加运行时间。
去年我们运行报告时卡住了 3 个小时。
还有另一个重要的细节。
InnoDB依靠日志来恢复数据,而MyISAM没有这个功能。
如果桌子损坏,必须手工修复。
起初我以为MISAM更快,因为它支持全文索引,但后来我发现InnoDB 5 .6 版本添加了它。
等等,还有一件事。
MyISAM的表级锁在高对比度下有缺失的效果。
事实上,前面的一点延迟就会让一切都倒退。

得到反馈后,不要急于使用MyISAM。
如果不清楚要进行全文检索,或者COUNT()无法秒级返回结果,建议默认使用InnoDB。
很多人不注意这一点。

MySQL中常见存储引擎有什么区别

2 02 2 年,我做一个使用MySQL数据库的小项目,选择了InnoDB引擎。
我当时就很迷茫,想着要保证数据的一致性。
结果银行转账操作涉及到两个账户,一借一存,都要依赖InnoDB的事务支持,不然就真的很乱了。
后来项目上线了,得到了客户的良好反馈,让我心里踏实了。

MyISAM,这个东西,我记得当时有一个朋友的项目,非常用它。
他喜欢它主要是因为它占用空间小而且速度快。
当时项目数据量不大,读写频繁,所以使用起来很方便。
不过后来我想,这个东西不支持交易。
如果出了问题,数据不一致,那就麻烦了。

MEMORY,我对这个存储引擎了解不多。
我只知道它的所有数据都在内存中,处理速度快,适合临时数据。
但我也知道,如果内存出现问题,数据就会消失。
这个生命周期较短,所以适合缓存等。

总之,选择存储引擎取决于具体的需求。
我当时也很极端,认为InnoDB是最好的。
后来发现MyISAM和MEMORY也有它们的应用场景。