mysql的存储引擎介绍

1.InnoDB 存储引擎

  • 1.简介
       作为mysql默认的事务型引擎。用来处理大量的的短期事务,其性能与自动崩溃恢复的特性,使其在非事务型存储中也得到了广泛的运用。在没有非常特殊的要求的情况下,优先选择InnoDB。
  • 2.特性:
    ① 采用mvcc来支持高并发,实现了四个隔离级别。默认为可重复读(REPEATABLE READ),并且使用间隙锁(next-key locking)策略来防止幻读。
    ② InnoDB表是基于聚簇索引建立的,聚簇索引对住建查询有高的执行性能。InnoDB存储格式是平台独立的。
    ③ 从磁盘读数据时,采用可预测性预读。能够在内存中创建hash索引以加速读操作的自适应哈希索引。能够加速插入操作的插入缓冲区等。
    ④ 作为事务型的存储引擎,InnoDB通过一些机制和工具支持真正的热备份。

2.MyISAM 存储引擎

  • 1.简介
       在Mysql5.1及其以前的版本,MyISAM作为默认的存储引擎。提供了大量的特性,包括全文索引、压缩、空间函数等。但是MyISAM不支持事务和行级锁,崩溃后无法安全恢复。MyISAM会将表存储在两个文件中:数据文件和索引文件。
  • 2.特性
    加锁与并发
        MyISAM会对整张表加锁,因为不支持行级锁,读取时加入共享锁(读锁),写入时加入排他锁。在有查询的时候,也可以往表里插入新数据(插入并发)。
    修复
       执行表的修复可能导致一些数据丢失,而且修复操作是非常慢。
    索引特性
       对于MyISAM表,即使BLOB和TEXT也可进行索引,基于字段前500个字符创建索引。支持全文索引,基于分词创建索引,支持复杂查询。
    延迟更新索引键
       在设置了DELY_KEY_WRITE选项,每次执行修改时,不会立刻将修改的索引写入磁盘,先写入内存的键缓冲区,在清除键缓冲区或者关闭表时,才会将修改的索引写入磁盘。可以设置单表,也可以设置全局。
    压缩表
       在表创建和导入数据以后,不做任何操作了,可以对这样子的表进行MyISAM压缩。压缩表之后不能进行修改,压缩表可以减少磁盘占用空间,减少磁盘I/O,提升查询性能。

Archive 引擎

  • 1.简介
       Archive存储引擎只支持insert和select操作,在Mysql5.1之前不支持索引。会缓存所有的写并利用zlib对插入进行压缩,比MyISAM占用I/O少。每次查询操作都要扫描全表。Archive适合做日志和数据采集类的应用或者在一些需要快速插入的场景。
  • 2.特性
       支持行级锁和专用的缓冲区,可以实现高并发的插入。在一个查询操作开始直到结束之前,其他查询操作是不可用的。在批量插入完成之前,其他读操作是不可见的。Archive不是一个事务型的引擎,是一个高速插入和压缩的简单引擎。

Blackhole 引擎

  •    没有实现任何的存储机制,会丢弃所有插入的数据,不做任何保存。可以用于复制数据到备库,或者简单的记录一下日志。

GSV 引擎

  •    可以将普通的GSV文件(逗号分割值得文件)作为mysql的表来处理,但是不支持索引。可以作为一个数据交换的中间媒介。导入非mysql的文件,如EXCEL、CSV等文件导入和导出。

Federated 引擎

  •     作为访问mysql服务器的一个代理,会创建一个远程连接mysql服务器的客户端连接,并将查询传输到远程服务器进行执行,并将得到的数据进行返回。

Memory 引擎

  • 1.简介
        快速访问数据,并且不修改这些数据,重启以后丢失数据也没有关系,可以使用此存储引擎。比MyISAM表快一个数量级,数据保存在内存中,不进行I/O磁盘。Memory在重启之后,结构会保留,但是数据会丢失。
  • 2.使用场景
    ①用于查询或者映射表。
    ②用于缓存周期性聚合数据的结果。
    ③用于保存数据分析产生的中间数据。
  • 3.特性
       支持hash索引,查询非常快。Memory表是表级锁,因此写入比较慢。不支持BLOB和TEXT的类型的列,并且每行的长度都是固定的。在执行查询的过程中,会使用大量的临时表来保存中间结果。内部使用的临时表就是Memory表。在中间表太大超出Memory的限制,或者含有BLOB和TEXT字段,或转化为MyISAM表。
  • 4.与临时表的区别
       临时表使用CREATE TEMPORARY TABLE来创建,它可以使用任何存储引擎。临时表在连接时可见,断开连接后就消失。

Merge 引擎

  •    Merge是MyISAM的一个变种。Merge表是由多个MyISAM表合并而来的虚拟表。主要用于日志和数据仓库。

NDB 集群引擎

  •    作为SQL和NDB原生协议之间的接口。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值