MySQL
mysql使用文件系统存储表名和表的。 使用.frm文件存储表
MyISAM
- myISAM提供了全文检索,压缩和空间函数等功能。但是不提供事务支持和行级锁
- 存储方面使用了数据文件和索引文件分离模式。使用.MYD记录数据,.MYI记录索引
- 支持数据库的行数由硬盘空间和系统允许创建的文件大小所确定的。默认最大可以处理256TB的数据
- MyISAM使用的是表锁。支持自动/手动检查和修复表。
- 支持全文检索,允许为BLOB和TEXT类型的前500个字符创建索引
- 支持延迟写。
- 支持压缩表。用于压缩一些不常修改的表以提高性能
InnoDB
- 使用一系列的一个或多个的独立文件存储数据,我们称之为表空间(tablespace)
- 使用MVCC(多版本并发控制)来实现高并发
- 使用行级锁
- InnoDB不能够对索引进行排序,MyISAM可以
- 可以建立主键聚集索引。提供快速的主键查询
- 不可以在写入的时候通过排序创建索引,MyISAM可以
- InnoDB提供各种内部优化,包括预读优化,适用性的哈希索引,插入缓存
- InnoDB提供外键,MyISAM不提供
Memory Engine
- 使用哈希索引
- 不支持TEXT 和BLOB类型。当有这两种类型时,会转换为使用MyISAM
- 用于存储搜索的中间表
- 不支持索引统计
- 数据不能持久化
Archive Engine
- 只支持INSERT和SELECT操作
- 不支持索引
- 适用于logging 和数据获取
- 支持行级锁和高并发插入
CSV Engine
- 可以将CSV文件作为表
- 允许在服务运行过程中复制文件进行读写操作
- 常用于数据转换或者是特定类型的日志
Federated Engine
- 不在本地存储数据,每一个Federated 表关联到远程的MySQL服务器
Blackhole Engine
- 没有任何存储机制。丢弃任何INSERT操作。用于查找和存储引擎无关的性能瓶颈
- 通过启用和不启用二进制日志记录的Blackhole engine的性能来测量日志记录的开销
NDB Cluster Engine
- 具有实时,冗余和加载平衡的特点
- 支持事务机制
- 同事将数据存储到磁盘和内容
- 优化主键查询
- 包括数据节点,管理节点和SQL节点。
- 每个数据节点都有数据片段而片段是重复的。一段数据在不同节点上有多个副本
- 管理节点用于检索集中式配置。监视和管理聚集节点
Falcon Engine
- 在内容中使用MVCC和事务机制
- 为64位的处理器设计
- 可能成为网络应用
SolidBD Engine
- 事务引擎
- 使用MVCC
- 支持权限控制和乐观并发控制
- 与InnoDB一样,使用聚集索引
- SolidBD 产品是由solidBD存储引擎,MyISAm存储引擎和MySQL服务器组成的
PBXT Engine
- 使用事务日志和数据文件避免预写记录,减少事务提交的开销
- 能够处理高写并发
- 使用MVCC
- 支持外键
- 使用持久化的事务机制
Maria Storage Engine
- 是MyISAM的替代品
- 支持事务或者非事务机制
- 紧急恢复
- 行级锁和MVCC
- 更好的BLOB的处理
使用数据要考虑的因素
- 事务
- 并发
- 备份机制
- 紧急恢复
- 特殊功能
附:MVCC:多版本并发控制。MVVC基于快照隔离机制,用以解决读-写冲突的无锁并发控制。