1 InnoDB存储引擎
InnoDB存储引擎支持事务,是面向在线事务处理方面的应用,支持行锁、外键,支持类似Oracle的非锁定读,默认情况读取操作不会产生锁,在MySQL5.1版本之后被设定成默认存储引擎,此前是MyISAM
InnoDB存储引擎将数据放在一个逻辑表空间,由InnoDB自身进行管理,将每个InnoDB存储的表单独放在一个独立的ibd文件中,同样也可以使用裸设备(row disk)建立表空间
InnoDB使用多版本并发控制(MVCC)获得高并发性,实现了SQL标准的4种隔离级别,默认使用的是REPEATABLE READ(可重复读)级别,此外还提供了插入缓冲、预读、二次写、自适应哈希索引、预读等高性能和高可用的功能
针对表数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,每张表的存储按照主键的顺序存放,如果没有显式地指定主键,InnoDB将为每一行生成一个6字节的ROWID作为主键
1 InnoDB存储引擎
InnoDB存储引擎支持事务,是面向在线事务处理方面的应用,支持行锁、外键,支持类似Oracle的非锁定读,默认情况读取操作不会产生锁,在MySQL5.1版本之后被设定成默认存储引擎,此前是MyISAM
InnoDB存储引擎将数据放在一个逻辑表空间,由InnoDB自身进行管理,将每个InnoDB存储的表单独放在一个独立的ibd文件中,同样也可以使用裸设备(row disk)建立表空间
InnoDB使用多版本并发控制(MVCC)获得高并发性,实现了SQL标准的4种隔离级别,默认使用的是REPEATABLE READ(可重复读)级别,此外还提供了插入缓冲、预读、二次写、自适应哈希索引、预读等高性能和高可用的功能
针对表数据的存储,InnoDB存储引擎采用了聚集(clustered)的方式,每张表的存储按照主键的顺序存放,如果没有显式地指定主键,InnoDB将为每一行生成一个6字节的ROWID作为主键
3 NDB存储引擎
NDB是一种集群存储引擎,类似Oracle的RAC share everything结构,但不同的是其使用share nothing的集群结构,因此能提高更高级别的高可用性。
NDB的特点是数据放置在内存中(5.1版本后可将非索引数据放在磁盘中),主键查找的速度极快,并可以通过添加NDB数据存储节点(Data Node)线性的提高存储性能,可以作为高可用、高性能的集群系统
注:NDB存储引擎的连接操作是在MySQL数据库层完成的,而不是在存储引擎层,意味着需要较大的网络开销,因此查询速度较慢
4 Memory存储引擎
Memory将数据存放在内存中,如果数据库重启或崩溃,所有数据将丢失,适合用于存储临时数据的临时表以及数据仓库中的维度表,默认使用哈希索引
该引擎存在一些限制,比如只支持行锁,并发性能差,不支持TEXT和BLOB列类型,还有存储变长字段是是按照定长方式进行的,存在内存浪费的问题。若存放结果集时,中间结果集的大小大于Memory存储引擎表的容量设置,或存在TEXT或BLOB字段,MySQL会将其转化为MyISAM存储引擎放在磁盘,因MyISAM不缓存数据文件,因此产生的临时表的性能会有损失
5 Archive存储引擎
Archive存储引擎只支持insert和select操作,从MySQL5.1之后支持索引,使用zlib算法压缩数据行后存储,压缩率可达到1:10,适用于存储归档数据,并使用行锁实现高并发的写入操作
6 Federated存储引擎
Federated存储引擎不存放数据,用于指向一台远程MySQL数据库服务器的表,类似SQL Server的链接服务器与Oracle的透明网关,不同的是Federated存储引擎只支持MySQL数据表,不支持异构数据表
7 Maria存储引擎
Maria存储引擎是新开发的引擎,目标是取代原有的MyISAM存储引擎,成为MySQL的默认存储引擎,特点是缓存数据,索引数据,行锁设计,提供MVCC功能,支持事务和非事务安全的选项支持,以及更好的BLOB字符类型的处理性能