Innodb和Mysiam引擎的区别
Posted 翔蓝晶露
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Innodb和Mysiam引擎的区别相关的知识,希望对你有一定的参考价值。
一:区别
Mysiam:
1.是非事务安全型。
2.是表级锁。
3.如果执行大量的select,Mysiam是更好的选择。
4.select count(*)from table。Mysiam只简单的读取保存好的行。注意:count(*)语句包含where条件时,两种表操作一样。
5.不支持外键。
Innodb:
1.是事务安全型的(支持事务处理等高级处理)。
2.是行级锁。
3.如果你的数据执行大量的Insert或updata,出于性能的考虑,应使用innodb表。
4.Innodb不保存表的具体行,也就是说,执行,select count(*) form table 时,要扫描一遍整个表来计算有多少行。
5.支持外键。
二:为什么Mysiam比Innodb的查询速度快。
Innodb在做select的时候,要维护的东西比Mysiam引擎多的多。
1.数据块,Innodb要缓存,Mysiam只缓存索引块,这中间还有换进换出的减少。
2,Innodb寻址要映射到块。在到行。Mysiam记录的直接是文件的offset,定位比Innodb要快。
3.Innodb还需要维护MVCC一致,虽然你的场景没有,但他还是需要检查和维护。(MVCC多版本并发控制)
三:应用场景
Myisam适合:1.做很多的count的计算;2.插入不频繁,查询非常频繁;3.没有事务。
Innodb适合:1.可靠性要求比较高,或者要求事务;2.表更新和查询都相当频繁,并且行锁定的机会比较大的情况。
以上是关于Innodb和Mysiam引擎的区别的主要内容,如果未能解决你的问题,请参考以下文章