MySQL各存储引擎

查看MySQL支持的引擎:
1
mysql> show engines;
MyISAM存储引擎
  • 提供高速存储和检索,以及全文搜索能力
  • 不支持事物。表级锁。不能再表损坏后恢复数据
  • 适合查询频繁的情况
InnoDB
  • 具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。
  • 基于聚簇索引建立,聚簇索引对主键查询有很高的性能。
  • 支持事务和外键。行级锁。
  • 适合在以下几种情况下使用:

1.更新和查询都相当的频繁,多重并发
2.要求事务,或者可靠性要求比较高
3.外键约束,MySQL支持外键的存储引擎只有InnoDB

  • 一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择
MEMORY(HEAP)引擎
  • 数据保存在内存中,拥有极高的插入、更新和查询效率。但是不稳定,重启以后数据都会丢失。
  • 不支持事务。支持表级锁,因此并发写入的性能较低。
  • 支持长度不变的数据类型,不支持BLOB或TEXT长度可变的数据类型。
  • 支持HASH索引和B-Tree索引,擎默认使用HASH索引。
  • 在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制MEMORY表的大小。
ARCHIVE引擎
  • 拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩。
  • 支持最基本的插入和查询两种功能。在MySQL 5.5开始支持索引。
  • 不支持事务。支持行级锁和专用的缓存区,所以可以实现高并发的插入。
  • 适合存储大量日志、历史数据
BLACKHOLE引擎
  • 接受但不存储数据,但是如果MySQL启用了二进制日志,SQL语句被写入日志(并被复制到从服务器)。
  • 用于做日志记录或同步归档的中继存储。但这种应用方式会碰到很多问题,因此并不推荐。
  • 支持事务,而且支持mvcc的行级锁。
CSV引擎
  • 每个表会生成一个.CSV文件,将CSV类型的文件当做表进行处理。
  • 把数据以逗号分隔的格式存储在文本文件中,这种文件是一种普通文本文件,每个数据行占用一个文本行。
  • 不支持索引,即使用该种类型的表没有主键列,也不允许表中的字段为null。