mysql常用的几种存储引擎
MyISAM:
(1)做很多count 的计算;
(2)插入不频繁,查询非常频繁;
(3)没有事务。
InnoDB:
InnoDB逻辑存储结构:
所有表的数据被逻辑的存放在一个表空间里。表空间又由段(segment)区(extent)页(page)组成,
页在一些文档中也称为块。
表空间由各个段组成,数据段即为B+树的叶节点,索引段即为B+树的非索引节点(我理解的是B+树中的非叶子节点)。
区由64个连续的页组成,每个页的大小16kb,每个区的大小1Mb。对于大的数据段,InnoDB存储引擎最多可以申请4个区。
(1)可靠性要求比较高,或者要求事务;
(2)表更新和查询都相当的频繁,并且表锁定的机会比较大的情况。
为什么MyISAM会比Innodb 的查询速度快?
INNODB在做SELECT的时候,要维护的东西比MYISAM引擎多很多;
1)数据块,INNODB要缓存,MYISAM只缓存索引块, 这中间还有换进换出的减少;
2)innodb寻址要映射到块,再到行,MYISAM 记录的直接是文件的OFFSET,定位比INNODB要快
3)INNODB还需要维护MVCC一致;虽然你的场景没有,但他还是需要去检查和维护
MVCC ( Multi-Version Concurrency Control )多版本并发控制
Archive:
高压缩和快速插入的特点Archive非常适合作为日志表的存储引擎,但是前提是不经常对该表进行查询操作。
MEMORY:所有的数据都在内存中,数据的处理速度快,但是安全性不高。如果需要很快的读写速度,对数据的安全性要求较低,可以选择MEMOEY。
它对表的大小有要求,不能建立太大的表。所以,这类数据库只使用在相对较小的数据库表。
原文地址:https://www.cnblogs.com/smallJunJun/p/9573985.html