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引擎的区别的主要内容,如果未能解决你的问题,请参考以下文章

mysql索引优化 mysiam和innodb区别?

随讲MyIsam和InnoDB的区别

mysql中engine=innodb和engine=myisam的区别(转)

Mysiam锁模式 innodb锁模式 是什么区别

MySIAM与Innodb引擎

mysql innodb和myisam哪个查询速度快