查看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。