Innodb和Mysiam引擎的区别
程序员文章站
2023-01-29 16:33:19
一:区别 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.表更新和查询都相当频繁,并且行锁定的机会比较大的情况。
上一篇: 学习安卓开发[3] - 使用RecyclerView显示列表
下一篇: 正则表达式到底是什么