目录

  • 一、MySQL存储引擎概述

    • 1.1 什么是存储引擎?
    • 1.2 MySql支持哪些存储引擎
    • 1.3 各种搜索引擎介绍
  • 二、常用存储引擎及使用场景

一、MySQL存储引擎概述

1.1 什么是存储引擎?

MySQL中的数据用各种不同的技术存储在文件(或者内存)中。这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力。通过选择不同的技术,你能够获得额外的速度或者功能,从而改善你的应用的整体功能。

例如,如果你在研究大量的临时数据,你也许需要使用内存存储引擎。内存存储引擎能够在内存中存储所有的表格数据。又或者,你也许需要一个支持事务处理的数据库(以确保事务处理不成功时数据的回退能力)。

这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)。

MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。你可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及你需要你的数据结合什么性能和功能的时候为你提供最大的灵活性。

选择如何存储和检索你的数据的这种灵活性是MySQL为什么如此受欢迎的主要原因。其它数据库系统 (包括大多数商业选择)仅支持一种类型的数据存储 。

遗憾的是,其它类型的数据库解决方案采取的“一个尺码满足一切需求”的方式意味着你要么就牺牲一些性能,要么你就用几个小时甚至几天的时间详细调整你的数据库。使用MySQL,我们仅需要修改我们使用的存储引擎就可以了。

1.2 MySql支持哪些存储引擎

mysql5.6支持的存储引擎包括InnoDB、MyISAM、MEMORY、CSV、BLACKHOLE、FEDERATED、MRG_MYISAM、ARCHIVE、PERFORMANCE_SCHEMA。其中NDB和InnoDB提供事务安全表,其他存储引擎都是非事务安全表。

1.3 各种搜索引擎介绍

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

MyISAM:MyISAM既不支持事务、也不支持外键、其优势是访问速度快,但是表级别的锁定限制了它在读写负载方面的性能,因此它经常应用于只读或者以读为主的数据场景。

Memory:在内存中存储所有数据,应用于对非关键数据由快速查找的场景。Memory类型的表访问数据非常快,因为它的数据是存放在内存中的,并且默认使用HASH索引,但是一旦服务关闭,表中的数据就会丢失

BLACKHOLE:黑洞存储引擎,类似于 Unix 的 /dev/null,Archive 只接收但却并不保存数据。对这种引擎的表的查询常常返回一个空集。这种表可以应用于 DML 语句需要发送到从服务器,但主服务器并不会保留这种数据的备份的主从配置中。

CSV:它的表真的是以逗号分隔的文本文件。CSV 表允许你以 CSV 格式导入导出数据,以相同的读和写的格式和脚本和应用交互数据。由于 CSV 表没有索引,你最好是在普通操作中将数据放在 InnoDB 表里,只有在导入或导出阶段使用一下 CSV 表。

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 服务器来创建一个逻辑数据库的能力。适用于分布式或者数据市场的场景。

Example:这种存储引擎用以保存阐明如何开始写新的存储引擎的 MySql 源码的例子。它主要针对于有兴趣的开发人员。这种存储引擎就是一个啥事也不做的 "存根"。你可以使用这种引擎创建表,但是你无法向其保存任何数据,也无法从它们检索任何索引。

二、常用存储引擎及使用场景

InnoDB:用于事务处理应用程序,支持外键和行级锁。如果应用对事物的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包括很多更新和删除操作,那么InnoDB存储引擎是比较合适的。InnoDB除了有效的降低由删除和更新导致的锁定,还可以确保事务的完整提交和回滚,对于类似计费系统或者财务系统等对数据准确要求性比较高的系统都是合适的选择。

MyISAM:如果应用是以读操作和插入操作为主,只有很少的更新和删除操作,并且对事务的完整性、并发性要求不高,那么可以选择这个存储引擎。

Memory:将所有的数据保存在内存中,在需要快速定位记录和其他类似数据的环境下,可以提供极快的访问。Memory的缺陷是对表的大小有限制,虽然数据库因为异常终止的话数据可以正常恢复,但是一旦数据库关闭,存储在内存中的数据都会丢失。

转载于:https://www.cnblogs.com/XuChengNotes/p/11588520.html

126 MySQL存储引擎概述相关推荐

  1. mysql存储引擎静态表_MySQL存储引擎(表类型)的选择

    一.MySQL存储引擎概述 MySQL与多数数据库不同的是包含存储引擎这一特性,用户可以根据应用的需要选择合适的存储引擎来使存储和索引数据,以及是否使用事务等.MySQL5.0支持的存储引擎包括MyI ...

  2. 第 3 章 MySQL 存储引擎简介

    3.1 MySQL 存储引擎概述 MyISAM存储引擎是MySQL默认的存储引擎,也是目前MySQL使用最为广泛的存储引擎之一.他的前身就是我们在MySQL发展历程中所提到的 ISAM,是ISAM的升 ...

  3. DBA(七):PXC、MySQL存储引擎

    PXC PXC概述 PXC介绍 Percona XtrDB Cluster(简称PXC) 是基于Galera的mysql奥可用集群解决方案 Galera Cluster是Codership公司开发的一 ...

  4. MySQL高级 - 存储引擎 - 概述

    存储引擎概述 ​ 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. ​ 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式 .存储引擎 ...

  5. MySQL体系结构和存储引擎概述

    一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级 ...

  6. mysql maria引擎_MySQL体系结构和存储引擎概述

    一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级 ...

  7. mysql n 存储结构,MySQL体系结构和存储引擎概述

    一.定义数据库和实例 数据库: 物理操作系统文件或其他形式文件类型的集合.数据库文件可以是frm.MYD.ibd 结尾的文件. 从概念上来说,数据库是文件的集合,是依照某种数据模型组织起来并存放于二级 ...

  8. 存储引擎——概述|| 各种存储引擎的特性(InnoDB||MyISAM||MEMORY||MERGE) ||存储引擎的选择

    存储引擎概述 和大多数的数据库不同, MySQL中有一个存储引擎的概念, 针对不同的存储需求可以选择最优的存储引擎. 存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式. 存储引擎是基于表 ...

  9. MySQL - 存储引擎初探

    文章目录 生猛干货 存储引擎概述 实例层 物理层 内存和物理结构 Buffer Pool Redo log 5.7新版本特性 8.0 新版本特性 InnoDB VS MyISAM 功能对比 事务支持 ...

  10. MySQL高级-MySQL存储引擎

    MySQL存储引擎 1.MySQL体系结构 2. 存储引擎 2.1 存储引擎概述 2.2 各种存储引擎特性 2.2.1 InnoDB 2.2.2 MyISAM 2.2.3 MEMORY 2.2.4 M ...

最新文章

  1. Lumen报class does not exist的mailer坑
  2. ITK VTK CTK QT 跨平台联合开发之 一
  3. 2位图灵奖得主、7位院士等一众AI大佬云集共议数字化转型 | CNCC 2021
  4. 将.NET概念映射到Lightning平台
  5. windows 批处理设置环境变量
  6. Maven学习总结(31)——Maven坐标详解
  7. opencv imread 读入图像为空
  8. 小说和散文在写作语言(表达方式等)方面究竟有多大不同?
  9. Mybatis, 实现一对多
  10. 阿里云Link Security为企业级区块链提供易用性安全解决方案
  11. dxf geojson 转换_如何将Shapefile(Shp)文件转换为AutoCAD(Dwg、Dxf)文件?
  12. 从Gauss-Newton算法到 LM算法 (详细推导及MATLAB实现、多自变量问题)
  13. mce:style或者mcs:script是什么意思
  14. 工控安全与传统安全区别
  15. 人工智能时代的主要特征是什么?
  16. java数组找出重复元素及次数_Java查找数组重复元素,并打印重复元素、重复次数、重复元素位置...
  17. realsense系列(三):播放深度图和RGB图
  18. 服务器里微信怎么多开,谈谈微信多开
  19. 颈椎间盘突出的治疗方法
  20. Git 里面的 origin 到底代表什么意思?【转载】

热门文章

  1. slam 图像处理 matlab,MATLAB R2020a图像处理和计算机视觉新进展
  2. linux之VMware安装Centos7
  3. 十二、Oracle学习笔记:分页查询
  4. Could not get constructor for org.hibernate.persister.entity.SingleTableEntityPersister
  5. Logstash5.X 日志搜集处理框架 安装配置
  6. php curl_setopt 登录 获取数据
  7. jfinal 模板引擎
  8. AVA + Spectron + JavaScript 对 JS 编写的客户端进行自动化测试
  9. Vue2.0 的漫长学习ing-2-1
  10. 我的Android进阶之旅------gt;Android嵌入图像InsetDrawable的使用方法