码迷,mamicode.com
首页 > 数据库 > 详细

Innodb和Mysiam引擎的区别

时间:2018-11-26 13:48:48      阅读:333      评论:0      收藏:0      [点我收藏+]

标签:性能   ble   upd   保存   并且   维护   mvcc   isa   版本   

一:区别

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引擎的区别

标签:性能   ble   upd   保存   并且   维护   mvcc   isa   版本   

原文地址:https://www.cnblogs.com/xlju/p/10019553.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!