目录
三 存储引擎
(一)InnoDB
InnoDB存储引擎支持事务、行锁、外键、非锁定读、从MySql5.5.8版本开始,InnoDb是默认的存储引擎。
InnoDB通过使用多版本并发控制(MVCC)来获得高并发性,并实现了SQL标准的4种隔离级别,默认为REPEATABLE级别,还使用一种next-key locking的策略来避免幻读,除此之外,还提供了插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)、预读(read ahead)等高性能和高可用的功能。
InnoDb采用聚集方式存放表中的数据,每张表的存储都是按主键的顺序存放的,如果没有显式指定主键,则InnoDB存储引擎会为每一行记录自动生成一个6字节的ROWID作为主键。
(二)MyISAM存储引擎
MyISAM存储引擎不支持事务、表锁设计,支持全文索引,在MySql5.5.8版本之前MyISAM存储引擎是默认的存储引擎。由于MyISAM存储引擎不支持事务,因此主要用于数据仓库这种不具有业务逻辑的应用。
MyISAM存储引擎只缓存索引文件,不缓存数据文件。数据文件可以使用myisampack工具(哈夫曼编码静态压缩算法)进一步压缩。
(三)NDB存储引擎
NDB是一个集群存储引擎,其将全部数据存储于内存中(从MySql5.1开始,可以将非索引数据放在磁盘上),因此主键查找速度极快,并且可以通过添加NDB数据存储节点线性提高数据库性能。
(四)Memory存储引擎
Memory将表中的数据存放在内存中,适合用于存储临时数据的临时表,Memory存储引擎使用Hash索引,而不是B+树索引。
Memory存储引擎速度快,但只支持表锁,并发差,不支持TEXT和BLOB类型。
(五)Archive存储引擎
Archive存储引擎只支持INSERT和SELECT操作,从MySql5.1开始支持索引,不支持事务,使用zlib算法对数据行进行压缩后存放,压缩比可达到1:10,主要用于高速插入和压缩功能,适合存储日志数据。
(六)Federated存储引擎
Federated存储引擎不存放数据,仅指向一台远程MySql数据库服务器上的表,不自持异构数据库表。
(七)Maria存储引擎
Maria存储引擎是对MyISAM的改进,添加了数据和索引文件的缓存、行锁设计、MVCC功能,支持事务,以及更好得到BLOB字段的处理性能。
特此声明:本系列博客为均为《MySql技术内幕 InnoDb存储引擎》读书笔记,存在错误还请指正
参考资料
《MySql技术内幕 InnoDb存储引擎》