0%

MySQL 引擎

使用以下命令可以查看MySQL支持的引擎

1
show engine;
  1. InnoDB

具有提交, 回滚和崩溃恢复能力的事务安全 (ACID兼容) 存储引擎.
基于聚簇索引建立, 聚簇索引对主键查询有很高的性能.
不过它的二级索引(secondary index, 非主键索引)中必须包含主键列, 所以如果主键列很大的话, 其他的所有索引都会很大.
因此表上的索引较多的话, 主键应当尽可能的小.
支持事务和外键.行级锁.
适合在以下几种情况下使用:
1.更新和查询都相当的频繁, 多重并发
2.要求事务, 或者可靠性要求比较高
3.外键约束, MySQL支持外键的存储引擎只有InnoDB
一般来说, 如果需要事务支持, 并且有较高的并发读取频率, InnoDB是不错的选择.

Percona 的 XtraDB 存储引擎是基于 InnoDB 引擎的一个改进版本.
它主要改进集中在性能, 可测量性和操作灵活行方面.

  1. MyISAM

提供高速存储和检索, 以及全文搜索能力.
不支持事务.表级锁.不能在表损坏后安全恢复数据.
适合只读数据, 或者表比较小, 可以忍受修复操作的情况.

适合在以下几种情况下使用:
1.做很多count的计算
2.查询非常频繁

  1. Memory (Heap)

数据保存在内存中, 拥有极高的插入, 更新和查询效率.但是不稳定, 重启以后数据都会丢失.
不支持事务.支持表级锁, 因此并发写入的性能较低.
支持长度不变的数据类型, 不支持BLOB或TEXT长度可变的数据类型. VARCHAR是一种长度可变的类型, 但因为它在MySQL内部当做长度固定不变的CHAR类型, 所以可以使用.
每个表会生成一个.frm文件, 该文件只存储表的结构.
支持HASH索引和B-Tree索引, 擎默认使用HASH索引.
在内存中存放数据, 所以会造成内存的使用, 可以通过参数max_heap_table_size控制MEMORY表的大小.

  1. Archive

拥有很好的压缩机制, 它使用zlib压缩库, 在记录被请求时会实时压缩.
支持最基本的插入和查询两种功能.在MySQL 5.5开始支持索引.
不支持事务.支持行级锁和专用的缓存区, 所以可以实现高并发的插入.
适合存储大量日志, 历史数据.

  1. Blackhole

接受但不存储数据, 但是如果MySQL启用了二进制日志, SQL语句被写入日志 (并被复制到从服务器) .
用于做日志记录或同步归档的中继存储.但这种应用方式会碰到很多问题, 因此并不推荐.
支持事务, 而且支持mvcc的行级锁.

  1. CSV

每个表会生成一个.CSV文件, 将CSV类型的文件当做表进行处理.
把数据以逗号分隔的格式存储在文本文件中, 这种文件是一种普通文本文件, 每个数据行占用一个文本行.
不支持索引, 即使用该种类型的表没有主键列, 也不允许表中的字段为null.

  1. NDB Cluster

NDB 集群存储引擎
分布式, 自动分片, share-nothing, 容灾, 高可用.

  1. Infobright

面向列的存储引擎

  1. Sphinx

高效全文搜索引擎