存储引擎是为不同的表类型处理 SQL 操作的 MySql 组件。InnoDB 是默认的、最通用的存储引擎,也是官方推荐使用的存储引擎,除非一些特定案例。MySql 5.6 中的 CREATE TABLE 语句创建的表的存储引擎默认就是 InnoDB。
MySql server使用的是一个可插拔存储引擎架构。它能够在执行的时候动态载入或者卸载这些存储引擎。
能够使用 SHOW ENGINES 语句来查看你的 MySql server所支持的存储引擎。

Support 列里的值指示出是否一个引擎能够被你使用:YES、NO 以及 DEFAULT 值分别表示某存储引擎是可用、不可用、可用而且是当前默认的存储引擎。

MySql 5.6 所支持的存储引擎

  • InnoDB:MySql 5.6 版本号默认的存储引擎。InnoDB 是一个事务安全的存储引擎,它具备提交、回滚以及崩溃恢复的功能以保护用户数据。InnoDB 的行级别锁定以及 Oracle 风格的一致性无锁读提升了它的多用户并发数以及性能。InnoDB 将用户数据存储在聚集索引中以降低基于主键的普通查询所带来的 I/O 开销。为了保证数据的完整性,InnoDB 还支持外键约束。

  • MyISAM:表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于仅仅读或者以读为主的数据场景。

  • Memory:在内存中存储全部数据,应用于对非重要数据由高速查找的场景。Memory 引擎曾被称为 HEAP 引擎。

    它的使用案例正在降低:InnoDB 的内存缓冲区为将大部分或全部数据保持在内存提供了一个通用并耐用的方式。NDBCLUSTER 为大分布式数据集提供了高速的 key-value 訪问。

  • CSV:它的表真的是以逗号分隔的文本文件。CSV 表同意你以 CSV 格式导入导出数据,以同样的读和写的格式和脚本和应用交互数据。因为 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里。仅仅有在导入或导出阶段使用一下 CSV 表。
  • Archive:黑洞存储引擎。相似于 Unix 的 /dev/null,Archive 仅仅接收但却并不保存数据。对这样的引擎的表的查询经常返回一个空集。

    这样的表能够应用于 DML 语句须要发送到从server,但主server并不会保留这样的数据的备份的主从配置中。

  • NDB:(又名 NDBCLUSTER)——这样的集群数据引擎尤其适合于须要最高程度的正常执行时间和可用性的应用。注意:NDB 存储引擎在标准 MySql 5.6 版本号里并不被支持。眼下能够支持 MySql 集群的版本号有:基于 MySql 5.1 的 MySQL Cluster NDB 7.1;基于 MySql 5.5 的 MySQL Cluster NDB 7.2。基于 MySql 5.6 的 MySQL Cluster NDB 7.3。同样基于 MySql 5.6 的 MySQL Cluster NDB 7.4 眼下正处于研发阶段。

  • Merge:同意 MySql DBA 或开发人员将一系列同样的 MyISAM 表进行分组,并把它们作为一个对象进行引用。

    适用于超大规模数据场景。如数据仓库。

  • Federated:提供了从多个物理机上联接不同的 MySql server来创建一个逻辑数据库的能力。适用于分布式或者数据市场的场景。
  • Example:这样的存储引擎用以保存阐明怎样開始写新的存储引擎的 MySql 源代码的样例。它主要针对于有兴趣的开发人员。

    这样的存储引擎就是一个啥事也不做的 "存根"。你能够使用这样的引擎创建表,可是你无法向其保存不论什么数据。也无法从它们检索不论什么索引。

对于整台server或整个 schema 你并不受限于使用同一种存储引擎。你能够为全部表定义存储引擎。比方,一个应用可能以 InnoDB 表为主。辅以一个 CSV 表用以导出数据到电子表格。少许 MEMORY 表用以暂时工作空间。

存储引擎的选择

MySql 提供的这些存储引擎为不同的应用案例进行设计。下表为 MySql 提供的存储引擎做了一个概述:
存储引擎特性总结
特性 MyISAM Memory InnoDB Archive NDB
存储上限 NDB RAM 64TB 384EB
事务支持
锁粒度
MVCC
地理空间数据类型支持
地理空间索引支持
B-tree 索引
T-tree 索引
Hash 索引
全文检索索引
聚集索引
数据缓存 N/A
索引缓存 N/A
数据压缩
数据加密
支持数据库集群
支持主从
支持外键
备份/时间点恢复
支持查询缓存
更新数据字典的统计

注意

  • InnoDB 在 MySQL 5.7.5 及以后的版本号才支持地理空间索引
  • InnoDB 通过其自适应哈希索引的特性内置进行哈希索引优化
  • InnoDB 在 MySql 5.6.4 及以后版本号才干支持 FULLTEXT 索引
  • MyISAM 仅仅能在行压缩格式时支持数据压缩。

    使用了行压缩的 MyISAM 表仅仅读

  • InnoDB 表压缩要求 InnoDB Barracuda 文件格式
  • MySql 的数据加密是由server的加密函数提供,并不是存储引擎
  • 主从支持、备份/时间点恢复等功能也是由server提供,而并不是存储引擎

MySql 存储引擎的选取的更多相关文章

  1. MySQl学习-——Mysql体系结构与Mysql存储引擎

    Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图:

  2. MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎

    文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...

  3. Mysql存储引擎及选择方法

    0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...

  4. Mysql存储引擎比较

    Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...

  5. MySQL存储引擎之Myisam和Innodb总结性梳理

    Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...

  6. MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述

    MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...

  7. 【转】mysql存储引擎

    http://www.cnblogs.com/kevingrace/p/5685355.html Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比   MyISAM In ...

  8. Mroonga 3.0.8 发布,MySQL 存储引擎

    Mroonga 3.0.8 支持 REPAIR TABLE 支持损坏的 groonga 数据库. Mroonga 是一个 MySQL 存储引擎,基于 Groonga,提供完整的全文搜索引擎.

  9. Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)

    在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...

随机推荐

  1. kali 2.0 linux中的Nmap的操作系统扫描功能

    不多说,直接上干货! 可以使用-O选项,让Nmap对目标的操作系统进行识别. msf > nmap -O 202.193.58.13 [*] exec: nmap -O 202.193.58.1 ...

  2. 阿里云安装mysql数据库出现2002错误解决办法

    在安装数据库的时候出现了如下错误: 解决办法如下: 1.在bin目录下 输入:kill -s 9 9907 再输入:ps -ef|grep mysql 显示如下: 2.回到lampp目录下,重启数据库 ...

  3. 【ICM Technex 2018 and Codeforces Round #463 (Div. 1 + Div. 2, combined) C】 Permutation Cycle

    [链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] p[i] = p[p[i]]一直进行下去 在1..n的排列下肯定会回到原位置的. 即最后会形成若干个环. g[i]显然等于那个环的大 ...

  4. nginx和apache

    apache所占用的内存资源较多,并且处理较慢 apache的全部模块都支持动静态编译 apache对Fcgi的支持不好 apache不支持epoll apache相对于nginx是一个庞然大物 ng ...

  5. Python数据可视化——散点图

    PS: 翻了翻草稿箱. 发现竟然存了一篇去年2月的文章...尽管naive.还是发出来吧... 本文记录了python中的数据可视化--散点图scatter, 令x作为数据(50个点,每一个30维), ...

  6. IIS Modules Overview

    Introduction The IIS 7 and above Web server feature set is componentized into more than thirty indep ...

  7. 初识activiti

    Activity工作流学习要点 1. 1个插件 在Eclipse中安装Activity插件,让你可以在Eclipse中绘制Activity工作流图 2. 1个引擎 ProcessEngine对象,Ac ...

  8. linux大于2T的磁盘使用GPT分区的方法分享

    (parted)表示在parted中输入的命令,其他为自动打印的信息 1.首先类似fdisk一样,先选择要分区的硬盘,此处为/dev/sdb ey: parted /dev/sdb 2.选择了/dev ...

  9. vue父子间通信案列三($emit和prop用法)

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  10. NARF(Normal Aligned Radial Feature)关键点

    NARF(Normal Aligned Radial Feature)关键点是为了从深度图像中识别物体而提出的,对NARF关键点的提取过程有以下要求: a) 提取的过程考虑边缘以及物体表面变化信息在内 ...