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. 它对表的大小有要求, 不能建立太大的表. 所以, 这类数据库只使用在相对较小的数据库表.
来源: http://www.bubuko.com/infodetail-2752084.html