欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Innodb和Mysiam引擎的区别

程序员文章站 2022-05-28 20:38:29
一:区别 Mysiam: 1.是非事务安全型。 2.是表级锁。 3.如果执行大量的select,Mysiam是更好的选择。 4.select count(*)from table。Mysiam只简单的读取保存好的行。注意:count(*)语句包含where条件时,两种表操作一样。 5.不支持外键。 ......

一:区别

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.表更新和查询都相当频繁,并且行锁定的机会比较大的情况。