MySql 存储引擎的选取
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 源代码的样例。它主要针对于有兴趣的开发人员。
这样的存储引擎就是一个啥事也不做的 "存根"。你能够使用这样的引擎创建表,可是你无法向其保存不论什么数据。也无法从它们检索不论什么索引。
存储引擎的选择
| 特性 | 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 存储引擎的选取的更多相关文章
- MySQl学习-——Mysql体系结构与Mysql存储引擎
Mysql体系结构与Mysql存储引擎 Mysql体系结构 mysql体系结构图:
- MySQL高级学习笔记(三):Mysql逻辑架构介绍、mysql存储引擎
文章目录 Mysql逻辑架构介绍 总体概览 总体概览 mysql存储引擎 查看命令 看你的 mysql 现在已提供什么存储引擎 : 看你的 mysql 当前默认的存储引擎 : 各个引擎简介 MyISA ...
- Mysql存储引擎及选择方法
0x00 Mysql数据库常用存储引擎 Mysql数据库是一款开源的数据库,支持多种存储引擎的选择,比如目前最常用的存储引擎有:MyISAM,InnoDB,Memory等. MyISAM存储引擎 My ...
- Mysql存储引擎比较
Mysql作为一个开源的免费数据库,在平时项目当中会经常使用到,而在项目当中我们的着重点一般在设计使用数据库上而非mysql本身上,所以在提到mysql的存储引擎时,一般都不曾知道,这里经过网上相关文 ...
- MySQL存储引擎之Myisam和Innodb总结性梳理
Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM InnoDB 构成上的区别: 每个MyISAM在磁盘上存储成三个文件.第一个 文件的名字以表的名字开始 ...
- MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述
MySQL存储引擎的实际应用以及对MySQL数据库中各主要存储引擎的独特特点的描述: 1.MySQL有多种存储引擎: MyISAM.InnoDB.MERGE.MEMORY(HEAP).BDB(Berk ...
- 【转】mysql存储引擎
http://www.cnblogs.com/kevingrace/p/5685355.html Mysql有两种存储引擎:InnoDB与Myisam,下表是两种引擎的简单对比 MyISAM In ...
- Mroonga 3.0.8 发布,MySQL 存储引擎
Mroonga 3.0.8 支持 REPAIR TABLE 支持损坏的 groonga 数据库. Mroonga 是一个 MySQL 存储引擎,基于 Groonga,提供完整的全文搜索引擎.
- Mysql存储引擎之TokuDB以及它的数据结构Fractal tree(分形树)
在目前的Mysql数据库中,使用最广泛的是innodb存储引擎.innodb确实是个很不错的存储引擎,就连高性能Mysql里都说了,如果不是有什么很特别的要求,innodb就是最好的选择.当然,这偏文 ...
随机推荐
- TortoiseGit配合msysGit在Git@OSC代码托管的傻瓜教程
命令行太麻烦,肿么破?便便利用睡觉的时间解决了一点效率问题,tortoiseGit处理GitHub,一样可以处理 Git @osc ,虽然说可以用gitk来调出图形界面,but,我就是不想看见黑黑的命 ...
- 1.CMD命令
CMD命令:开始->运行->键入cmd或command(在命令行里可以看到系统版本.文件系统版本)1. appwiz.cpl:程序和功能 2. calc:启动计算器 3. certmgr. ...
- 解析UML用例图中include与extend的区别
UML用例图有很多值得学习的地方,这里向大家简单介绍一下UML用例图中include与extend的区别,希望本文的介绍对你有所帮助. 本文和大家重点讨论一下UML用例图中include与extend ...
- spring的quartz定时任务
一.版本: 1.spring:4.1.7: 2.quartz:2.2.1: 二.基于ssm项目: 1.引入jar包:quartz-2.2.1.jar:spring所需包. 2.说明:quartz ...
- asp.net 项目发布注意点
在修改了某些代码后,要发布到服务器 这时候 ,在本地发布完把对应的文件复制到服务器上覆盖即可. 1.如果修改的是.cs .asmx等文件,则需要覆盖其对应项目名称的.dll文件 2.如果修改的是.h ...
- [USACO08DEC]拍头Patting Heads 水题
类似素数筛,暴力可过,不需要太多的优化 Code: #include<cstdio> #include<algorithm> #include<string> us ...
- NodeJS学习笔记 进阶 (13)Nodejs进阶:5分钟入门非对称加密用法
个人总结:读完这篇文章需要5分钟,这篇文章讲解了Node.js非对称加密算法的实现. 摘录自网络 地址: https://github.com/chyingp/nodejs-learning-guid ...
- etTimeout来实现setInterval
etTimeout来实现setInterval <script type="text/javascript"> function interval(func, w, t ...
- 【Henu ACM Round#20 F】 Arthur and Brackets
[链接] 我是链接,点我呀:) [题意] 在这里输入题意 [题解] 所给的li,ri是左括号从左到右的顺序给的. (且注意长度是2*n 现在我们先把第一个左括号放在第1个位置. 然后考虑第二个位置. ...
- Spring Boot学习总结(1)——Spring Boot入门
摘要:Spring Boots是为了帮助开发人员很容易的创建出独立运行和产品级别的基于 Spring 框架的应用. 从 Spring Boot 项目名称中的 Boot 可以看出来,Spring Boo ...