IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> MySQL之存储引擎 -> 正文阅读

[大数据]MySQL之存储引擎

MySQL之存储引擎

一、简介

???MySQL支持的存储引擎有好几种,如Memory/InnoDB/MyISAM/CSV/ARCHIVE等。通过show engines命令可以查看MySQL所支持的存储引擎。如下图所示:
在这里插入图片描述
??从3.23.34a版本开始就包含InnoDB存储引擎,更是在5.5之后的版本默认采用InnoDB引擎。InnoDB是MySQL的默认事务型存储引擎,被设计用来处理大量的短期(short-live)事务。可以确保事务的完成提交(Commit)和回滚(Rollback)。

二、分析

? 下面就每种存储引擎的使用场景及优缺点做简单的介绍说明:

1、InnoDB引擎

? InnoDB存储引擎是MySQL默认的事务型引擎,在平时的业务开发中,没有特殊的需求外,默认也是使用InnoDB引擎。InnoDB引擎底层的数据文件结构分为两部分:

  • 表名.frm:存储表结构
  • 表名.ibd:存储数据及索引

在之前的版本中,字典数据以元数据文件、非事务表等来存储。8.0版本之后,这些元数据文件被删掉了,如.frm,.par,.trn,.isl,.db.opt等。

? 在开发中,除了新增和查询外,还需要更新、删除操作,应该优先选择InnoDB引擎,InnoDB是为处理巨大数据量的最大性能设计的。采用B+Tree的数据结构存储,在叶子节点上既有数据也存了索引,因此会占用更多的磁盘空间来保存数据和索引。

2、MyISAM引擎

? MyISAM存储引擎提供了大量的特性,包括全文索引,压缩、空间函数等,但MyISAM不支持事务、行级锁、外键,并且有一个很大缺陷就是崩溃后无法安全恢复。MySQL在5.5版本之前的默认存储引擎就是MyISAM。MyISAM引擎底层的数据文件结构分为三部分:

  • 表名.frm:存储表结构

  • 表名.MYD:存储数据

  • 表名.MYI:存储索引

? MyISAM只缓存索引,不缓存真实数据,因此MyISAM的访问速度快,如果是对事务完整性没有要求或以select、insert为主的应用,可以考虑使用MyISAM存储引擎。

3、Archive引擎

? Archive引擎是用于数据存档,其特征及功能支持如下:

特征支持
B树索引不支持
备份/时间点恢复 (在服务器中实现,而不是在存储引擎中)支持
集群数据库支持不支持
聚集索引不支持
压缩数据支持
数据缓存不支持
加密数据(加密功能在服务器中实现)支持
外键支持不支持
全文检索索引不支持
地理空间数据类型支持支持
地理空间索引支持不支持
哈希索引不支持
索引缓存不支持
锁粒度行锁
MVCC不支持
存储限制没有任何限制
交易不支持
更新数据字典的统计信息支持

4、Blockhole引擎

? 丢失写操作,读操作会返回空内容。

5、CSV引擎

? 存储数据是,以逗号分隔各个数据项,这种格式的数据也可以用excel打开。

6、Memory引擎

? 基于内存的实现的引擎。主要的特征就是响应速度快,但是当MySQL服务崩溃时会有造成数据丢失。另外,要求存储的数据是数据长度不变的格式,像Blob和Text类型的数据是不可用的。主要特征如下:

  • Memory同时 支持哈希(HASH)索引 和 B+树索引 。
  • Memory表至少比MyISAM表要 快一个数量级 。
  • Memory 表的大小是受到限制 的。表的大小主要取决于两个参数,分别是 max_rows 和 max_heap_table_size 。其中,max_rows可以在创建表时指定;max_heap_table_size的大小默 认为16MB,可以按需要进行扩容。
  • 数据文件与索引文件分开存储。

? Memory适用的场景如目标数据比较小且访问频繁\数据是临时的\丢失数据不影响业务逻辑等场景都可以使用Memory引擎。

7、Federate引擎

? Federated引擎是访问其他MySQL服务器的一个 代理 ,尽管该引擎看起来提供了一种很好的 跨服务 器的灵活性 ,但也经常带来问题,因此 默认是禁用的 。

8、Merge引擎

? 管理多个MyISAM表构成的集合。

9、NDB引擎

? MySQL集群专用存储引擎,也叫NDB Cluster 存储引擎,主要用于 MySQL Cluster 分布式集群 环境,类似于 Oracle 的 RAC 集 群。

三、对比

特 点MyISAMInnoDBMEMORYMERGENDB
存 储 限 制64TB没有
事 务安 全/支持///
锁 机 制表锁,即使操作一条 记录也会锁住整个 表,不适合高并发的 操作行锁,操作时只锁某一行,不 对其它行有影响,适合高并发 的操作表锁表锁行 锁
B树 索 引支持支持支持支持支持
哈 希 索 引//支持/支持
全 文 索 引支持////
集 群 索 引/支持///
数 据 缓 存/支持支持/支持
索 引缓 存只缓存索引,不缓存 真实数据不仅缓存索引还要缓存真实数 据,对内存要求较高,而且内 存大小对性能有决定性的影响支持支持支持
数 据 可 压 缩支持////
空 间 使 用/
内 存 使 用中等
批 量 插 入 的 速 度
支 持外 键/支持///

四、InnoDB和MyISAM如何选择?

MySQL5.5之前默认的存储引擎是MyISAM,5.5之后改为InnoDB。两者对比如下:

对比项MyISAMInnoDB
外键不支持支持
事务不支持支持
行表锁表锁,即使操作一行数据也会所著整张表,不适合高并发操作行锁,操作时只锁住某一行数据,不影响其他数据,适合高并发操作
缓存只缓存索引,不缓存数据不仅缓存索引还要缓存真实数据,堆内存要求较高,而且内存大小对性能有决定性影响
自带系统表使用
关注点性能:节省资源、消耗少、简单业务事务:并发写、事务、更大资源
默认安装
默认使用
  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-02-24 15:21:57  更:2022-02-24 15:23:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 11:01:05-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码