简介

MySQL存储引擎负责数据的存储和读取,每个存储引擎都有自己的特点,MySQL 服务器通过API与存储引擎进行通信。

mysql ndb使用 mysql ndb引擎_Memory

MySQL体系结构中,支持了很多存储引擎:InnoDB,MyISAM,Memory,NDB Cluster等

InnoDB

支持事务,行锁,外键,使用多版本并发控制(MVCC)来获得高并发,实现了4种隔离级别,默认为 Repeatable 级别。使用一种被称为 next-key locking 的策略来避免幻读现象的产生。

高性能和高可用功能:插入缓冲、二次写、自适应哈希索引、预读

MyISAM

不支持事务、表锁设计、支持全文索引。只缓存索引文件,而不缓存数据文件;存储引擎由 MYD 和 MYI 组成,MYD 用来存放数据文件,MYI 用来存放索引文件。

NDB

NDB 存储引擎是一个集群存储引擎。

特点是数据全部放在内存中,因此主键查找的速度极快,并且通过添加NDB数据存储节点可以线性地提高数据库性能,是高性能、高可用的集群系统。

Memory

Memory存储引擎将表中的数据存放在内存中,如果数据库重启或发生崩溃,表中的数据都将丢失。适合用于存储临时数据的临时表,以及数据仓库中的纬度表。默认使用哈希索引

缺点:只支持表锁,并发性能差,不支持 Text 和 Blob 列类型。

Archive

只支持 INSERT 和 SELECT 操作,使用zlib算法将数据行进行压缩后存储,压缩比例一般可达1:10,使用行锁来实现高并发的插入。

使用场景:适合存储归档数据(例如:日志信息)

总结

不同存储引擎特性如下:

功能MyISAMMemoryInnoDBArchiveNDB存储限制无限制有限制64TB无限制有限制

事务支持

锁粒度表锁表锁行锁行锁行锁

MVCC机制支持支持支持

地理支持

B+树索引支持支持支持支持

哈希索引支持支持

全文索引支持

聚集索引支持