Mysql 引擎


MySQL

mysql使用文件系统存储表名和表的。 使用.frm文件存储表

MyISAM

  1. myISAM提供了全文检索,压缩和空间函数等功能。但是不提供事务支持和行级锁
  2. 存储方面使用了数据文件和索引文件分离模式。使用.MYD记录数据,.MYI记录索引
  3. 支持数据库的行数由硬盘空间和系统允许创建的文件大小所确定的。默认最大可以处理256TB的数据
  4. MyISAM使用的是表锁。支持自动/手动检查和修复表。
  5. 支持全文检索,允许为BLOB和TEXT类型的前500个字符创建索引
  6. 支持延迟写。
  7. 支持压缩表。用于压缩一些不常修改的表以提高性能

InnoDB

  1. 使用一系列的一个或多个的独立文件存储数据,我们称之为表空间(tablespace)
  2. 使用MVCC(多版本并发控制)来实现高并发
  3. 使用行级锁
  4. InnoDB不能够对索引进行排序,MyISAM可以
  5. 可以建立主键聚集索引。提供快速的主键查询
  6. 不可以在写入的时候通过排序创建索引,MyISAM可以
  7. InnoDB提供各种内部优化,包括预读优化,适用性的哈希索引,插入缓存
  8. InnoDB提供外键,MyISAM不提供

Memory Engine

  1. 使用哈希索引
  2. 不支持TEXT 和BLOB类型。当有这两种类型时,会转换为使用MyISAM
  3. 用于存储搜索的中间表
  4. 不支持索引统计
  5. 数据不能持久化

Archive Engine

  1. 只支持INSERT和SELECT操作
  2. 不支持索引
  3. 适用于logging 和数据获取
  4. 支持行级锁和高并发插入

CSV Engine

  1. 可以将CSV文件作为表
  2. 允许在服务运行过程中复制文件进行读写操作
  3. 常用于数据转换或者是特定类型的日志

Federated Engine

  1. 不在本地存储数据,每一个Federated 表关联到远程的MySQL服务器

Blackhole Engine

  1. 没有任何存储机制。丢弃任何INSERT操作。用于查找和存储引擎无关的性能瓶颈
  2. 通过启用和不启用二进制日志记录的Blackhole engine的性能来测量日志记录的开销

NDB Cluster Engine

  1. 具有实时,冗余和加载平衡的特点
  2. 支持事务机制
  3. 同事将数据存储到磁盘和内容
  4. 优化主键查询
  5. 包括数据节点,管理节点和SQL节点。
  6. 每个数据节点都有数据片段而片段是重复的。一段数据在不同节点上有多个副本
  7. 管理节点用于检索集中式配置。监视和管理聚集节点

Falcon Engine

  1. 在内容中使用MVCC和事务机制
  2. 为64位的处理器设计
  3. 可能成为网络应用

SolidBD Engine

  1. 事务引擎
  2. 使用MVCC
  3. 支持权限控制和乐观并发控制
  4. 与InnoDB一样,使用聚集索引
  5. SolidBD 产品是由solidBD存储引擎,MyISAm存储引擎和MySQL服务器组成的

PBXT Engine

  1. 使用事务日志和数据文件避免预写记录,减少事务提交的开销
  2. 能够处理高写并发
  3. 使用MVCC
  4. 支持外键
  5. 使用持久化的事务机制

Maria Storage Engine

  1. 是MyISAM的替代品
  2. 支持事务或者非事务机制
  3. 紧急恢复
  4. 行级锁和MVCC
  5. 更好的BLOB的处理

使用数据要考虑的因素

  1. 事务
  2. 并发
  3. 备份机制
  4. 紧急恢复
  5. 特殊功能

附:MVCC:多版本并发控制。MVVC基于快照隔离机制,用以解决读-写冲突的无锁并发控制。


文章作者: 彭峰
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 彭峰 !
  目录