美文网首页
储存引擎

储存引擎

作者: 牵小马过河 | 来源:发表于2018-07-19 11:56 被阅读0次

    MySQL各存储引擎

    一、MyISAM存储引擎

    提供高速存储和检索,以及全文搜索能力。

    不支持事务。表级锁。不能在表损坏后恢复数据。

    适合在以下几种情况下使用:

    1.做很多count的计算

    2.查询非常频繁

    二、InnoDB存储引擎

    具有提交、回滚和崩溃恢复能力的事务安全(ACID兼容)存储引擎。

    基于聚簇索引建立,聚簇索引对主键查询有很高的性能。不过它的二级索引(secondary index,非主键索引)中必须包含主键列,所以如果主键列很大的话,其他的所有索引都会很大。因此表上的索引较多的话,主键应当尽可能的小。

    支持事务和外键。行级锁。

    适合在以下几种情况下使用:

    1.更新和查询都相当的频繁,多重并发

    2.要求事务,或者可靠性要求比较高

    3.外键约束,MySQL支持外键的存储引擎只有InnoDB

    一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。

    三、MEMORY(HEAP)引擎

    数据保存在内存中,拥有极高的插入、更新和查询效率。但是不稳定,重启以后数据都会丢失。

    不支持事务。支持表级锁,因此并发写入的性能较低。

    支持长度不变的数据类型,不支持BLOB或TEXT长度可变的数据类型。VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。

    每个表会生成一个.frm文件,该文件只存储表的结构。

    支持HASH索引和B-Tree索引,引擎默认使用HASH索引。B-Tree索引的优于HASH索引的是,可以使用部分查询和通配查询,也可以使用<、>和>=等操作符方便数据挖掘。HASH索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了,因此HASH索引值适合使用在=和<>的操作符中,不适合在<或>操作符中,也同样不适合用在order by子句中。

    在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制MEMORY表的大小。

    四、ARCHIVE引擎

    拥有很好的压缩机制,它使用zlib压缩库,在记录被请求时会实时压缩。

    支持最基本的插入和查询两种功能。在MySQL 5.5开始支持索引。

    不支持事务。支持行级锁和专用的缓存区,所以可以实现高并发的插入。

    适合存储大量日志、历史数据。

    五、BLACKHOLE引擎

    接受但不存储数据,但是如果MySQL启用了二进制日志,SQL语句被写入日志(并被复制到从服务器)。

    用于做日志记录或同步归档的中继存储。但这种应用方式会碰到很多问题,因此并不推荐。

    支持事务,而且支持mvcc的行级锁。

    六、CSV引擎

    每个表会生成一个.CSV文件,将CSV类型的文件当做表进行处理。

    把数据以逗号分隔的格式存储在文本文件中,这种文件是一种普通文本文件,每个数据行占用一个文本行。

    不支持索引,即使用该种类型的表没有主键列,也不允许表中的字段为null。

    相关文章

      网友评论

          本文标题:储存引擎

          本文链接:https://www.haomeiwen.com/subject/qyttmftx.html