【MySQL】基础实战篇(3)—九大储存引擎详解

引擎

  • InnoDB引擎
  • MyISAM引擎
  • 对比
  • Archive引擎
  • Blackhole引擎
  • CSV引擎
  • Memoy引擎
  • 4.7Federated引擎
  • Merge引擎
  • NDB引擎

InnoDB引擎

具备外键支持功能的事物存储引擎

InnoDB是mysql默认事务型引擎,它被设计处理大量短期事务。可以确保事务的完整提交和回滚。
除了增加和查询外,还需要更新,删除操作等优先选用InnoDB引擎
InnoDB是为处理巨大数据量的最大性能设计。
相对于MyISAM存储引擎来说,InnoDB的处理效率差一些 并且会占用更多的磁盘空间以保存数据和·索引。
MyISAM存储引擎只缓存索引,不缓存真实数据,InnoDB不仅缓存索引,而且还要缓存真实数据,对内存要求较高。而且内存大小对性能有绝对性影响。

举例:
数据库 a ,表 b

如果表b采用InnoDB存储引擎 data\a中会产生一个或两个文件

==b.frm ==:表述表结构文件,字段长度等

如果采用系统表空间模式的,数据信息和索引信息都储存在ibdata1
如果采用独立表空间存储模式 ,data\a中还会产生b.ibd文件(储存数据信息和索引信息)

此外:
在,MySQL5.7中会在data\a目录下生成db.opt文件,用于保护数据库的相关配置。而在mysql8.0后不会再提供db.opt文件。
并且MySQL8.0中不会再生成b.frm文件,而是合并在b.ibd文件中。

MyISAM引擎

主要的非事务处理存储引擎
MyISAM提供了大量的特性,包括全文索引,压缩,空间函数等。但是MyISAM不支持 事务,外键,行级锁。最大的缺陷·就是崩溃后无法安全恢复。
MyISAM优势是访问速度快,对事务完整性没有要求或者以select,insert为主的应用。
针对数据统计有额外的常数存储,故而count(*)的查询效率很高。

如果表b采用MyISAM存储引擎 data\a中会产生三个文件。

MySQL5.7中b.frm文件中: 描述表结构文件,字段长度等。
MySQL8.0中b.×××.sdi文件中:描述表结构文件,字段长度等。
b.MYD(MYDATA):数据信息文件,储存信息文件,储存数据信息(如果采用独立表存储模式)
b.MYI(MYIndex):存放索引信息文件

对比

对比项MyISAMInnoDB
外键不支持支持
事务不支持支持
行级锁表锁,即使一条记录也会锁住整个表,不适合高并发的操作行锁,操作时只会锁一行,不会对其他行有影响,适合高并发操作
缓存只缓存索引,不缓存真实数据缓存索引和真实数据
自带系统使用使用不使用
关注点性能:节省资源,消耗少,简单业务事务:并发写,事务,更大资源
默认安装yesyes
默认使用noyes

Archive引擎

archive是归档的意思
仅仅支持插入和查询两种功能(行被插入后不能再修改)。
在MysQL5.5以后支持索引功能。
拥有很好的压缩机制,使用z1ib压缩库,在记录请求的时候实时的进行压缩,经常被用来作为仓库使用。

创建ARCHIVE表时,存储引擎会创建名称以表名开头的文件。数据文件的扩展名为.ARZ。

根据英文的测试结论来看,同样数据量下,Archive表比MyISAM表要小大约75%,比支持事务处理的InnoDB表小大约83%。
ARCHIVE存储引擎采用了行级锁。该ARCHIVE引擎支持AUTO_INCREMENT列属性。AUTO_INCREMENT列可具有唯一索引或非唯一索引,尝试在任何其他列上创建索引会导致错误。
archive表适合日志和数据采集(档案)类应用,适合存储大量的独立的作为历史记录的数据。拥有很高的插入速度但是对查询的支持较差。

Blackhole引擎

丢弃写操作,读操作会返回空内容

Blackhole引擎没有实现任何存储机制,它会丢弃所有插入的数据,不做任何保存。

但服务器会记录Backhole表的日志,所以可以用于复制数据到备库,或者简单地记录到日志。但这种应用方式会碰到很多问题,因此并不推荐。

CSV引擎

存储数据时,以逗号分隔各个数据项
CSV引擎可以将普通的CSV文件作为MvSOL的表来处理,但不支持索引
CSV引擎可以作为一种数据交换的机制,非常有用。
CsV存储的数据直接可以在操作系统里,用文本编辑器,或者excel读取。
对于数据的快速导入、导出是有明显优势的。
创建CSV表时,服务器会创建一个纯文本数据文件,其名称以表名开头井带有.csv扩展名,当你将数据存储到集中时,存储引擎将其以逗号分隔值格式保存到数据文件中。

Memoy引擎

采用的逻辑介质是内存,响应速度很快,但是当mys qld守护进程崩溃的所时候数据会丢失。

另外,要求存储的数据是数据长度不变的格式,比如.Blob和Text米型的数据不可用

主要特征
Memory同时支持哈希(HASH)索引和B+树索引。
哈希索引相等的比较快,但是对于范围的比较慢很多。
默认使用哈希(HASH)索引,其速度要比使用B型树(BTREE)索引快。
如果希望使用B树索引,可以在创建索引时选择使用

Memory表至少比MyISAM表要快一个数量级。

MEMORY表的大小是受到限制的,表的大小主要取决于两个参数
分别是max_rows和max_heap_table_size. 其中max_rows可以在创建表时指定
数据文件与索引文件分开存储
每个基于MEMORY存储引擎的表实际对应一个磁盘文件,该文件的文件名与表名相同,类型为.frm类型,该文件中只存储表的结构,而其数据文件都是存储在内存中的。有利于数据的快速处理,提供整个表的处理效率。
缺点:其数据易丢失,生命周期短。基于这个缺陷,选择MEMORY存储引1警时需要特别小心

4.7Federated引擎

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

Merge引擎

管理多个MylSAM表构成的表集合

NDB引擎

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

我的博客即将同步至腾讯云开发者社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=3gi69bh9654ws

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/99933.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

性能测试-如何进行监控设计

监控设计步骤 首先,你要分析系统的架构。在知道架构中使用的组件之后,再针对每个组件进行监控。 其次,监控要有层次,要有步骤。先全局,后定向定量分析。 最后,通过分析全局、定向、分层的监控数据做分析…

刘京城:我的《软件方法》学习经历(有彩蛋)

DDD领域驱动设计批评文集 做强化自测题获得“软件方法建模师”称号 《软件方法》各章合集 写在前面(潘加宇) 下面是刘京城写的关于他学习《软件方法》的经历。我在前面啰嗦几句。 我做软件建模方面的研究和普及工作已经24年了,和各行各业…

Springboot学习笔记——3

Springboot学习笔记——3 一、热部署1.1、手动启动热部署1.2、自动启动热部署1.3、热部署范围配置1.4、关闭热部署 二、配置高级2.1、第三方bean属性绑定2.2、松散绑定2.3、常用计量单位应用2.4、bean属性校验2.5、进制数据转换规则 三、测试3.1、加载测试专用属性3.2、加载测试…

TLR4-IN-C34-C2-COO,一种结合了TLR4抑制剂TLR4-IN-C34的连接器

TLR4-IN-C34-C2-COO是一种结合了TLR4抑制剂TLR4-IN-C34的连接器,在免疫调节中发挥重要作用,它通过抑制TLR4信号通路的传导,从而达到降低炎症反应的目的。TLR4是Toll样受体家族中的一员,它主要识别来自细菌和病毒的保守模式&#x…

红队专题-Cobalt strike4.5二次开发

红队专题 招募六边形战士队员IDEA 自动换行原版CS反编译破解jar包反编译拔掉暗桩初始环境效果 stageless beacon http通信协议 过程分析上线&心跳get请求teamserver 处理请求 参考链接 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 …

c#和Java我到底该怎么选?

选择专业是一个非常重要的决定,因为它可能会对你的职业生涯产生深远的影响。C#和Java都是非常流行的编程语言,它们都有自己的优点和适用场景。 感觉题主可以从下面几个方面来考虑: 1、就业前景: 就业前景是选择专业时需要考虑的…

vue:权限绑定菜单(全局引入,在template内用v-if调用)

登录成功后,将返回的权限保存到缓存 sessionStorage:浏览页面期间保存,关闭浏览器后丢掉数据 在utils内index.js内定义isAuth方法 在main.js内引入,并挂载全局 在vue页面内,在template内用v-if调用

vscode 配置默认shell

vscode 配置默认shell 最简单方式 "terminal.integrated.defaultProfile.osx": "zsh", 也可以自定义,参考 https://code.visualstudio.com/docs/terminal/profiles terminal 修改默认shell change your default shell to zsh chsh -s /bin/…

一个好用的k8s代理工具——KtConnect

介绍 KtConnect实现了开发者本地运行的服务与Kubernetes集群中的服务之间的双向互通。 核心功能 本地直接访问Kubernetes集群内网 通过KtConnect可以直接连接Kubernetes集群内部网络,在不修改代码的情况下完成本地联调测试 本地解析Kubernetes服务内网域名 直…

大华银行与微软合作:用365 Copilot提升工作效率

微软在官网宣布与新加坡最大银行之一大华银行(United Overseas Bank,简称“UOB”)达成技术合作。大华银行将于今年10月份开始,为300名员工提供Microsoft 365 Copilot服务,以实现降本增效。 Microsoft 365 Copilot是微…

C++三大特性——继承(上篇)

文章目录 目录 一、继承的概念及定义 1.1继承的概念 1.2 继承定义 1.2.1定义格式 1.2.2继承关系和访问限定符 1.2.3继承基类成员访问方式的变化 二、基类和派生类对象赋值转换 三、继承中的作用域 四、派生类的默认成员函数 一、继承的概念及定义 1.1继承的概念 继承(inherita…

bin-editor-next实现josn序列化

线上链接 BIN-EDITOR-NEXThttps://wangbin3162.gitee.io/bin-editor-next/#/editor gitee地址bin-editor-next: ace-editor 的vue3升级版本https://gitee.com/wangbin3162/bin-editor-next#https://gitee.com/link?targethttps%3A%2F%2Funpkg.com%2Fbin-editor-next%2F 实现…

47 从前序与中序遍历序列构造二叉树

从前序与中序遍历序列构造二叉树 先序无法确定子树大小,中序找不到根;所以用先序找根,用中序找大小题解1 递归题解2 迭代 给定两个整数数组 preorder 和 inorder ,其中 preorder 是二叉树的先序遍历, inorder 是同…

Win11自定义目录安装Linux子系统wsl

1. 启用适用于 Linux 的 Windows 子系统和虚拟机功能 以管理员身份打开 PowerShell(“开始”菜单 >“PowerShell” >单击右键 >“以管理员身份运行”),然后依次输入执行以下命令: dism.exe /online /enable-feature /f…

vue3+ts项目04-国际化

yarn add vue-i18n yarn add js-cookie yarn add types/js-cookiesrc下新建i18n文件夹,该文件夹下新建lang和pages文件夹, lang文件夹下新建en.ts // 定义内容 export default {router: {home: home,system: {system: system,menu: systemMenu,role: sy…

Dremio:新一代数据湖仓引擎

Dremio数据湖引擎 1、什么是Dremio2、什么是数据湖仓2.1、数据湖仓的历史和演变 3、Dremio查询引擎(Dremio Sonar)3、Dremio特点1、唯一具有自助式SQL分析功能的数据湖仓2、数据完全开放,无锁定3、亚秒级性能,云数据仓库成本的1/1…

【JavaEE重点知识归纳】第7节:类和对象

目录 一:了解面向对象 1.什么是面向对象 2.面向对象和面向过程区分 二:类定义和使用 1.什么是类 2.练习:定义一个学生类 三:类的实例化 1.什么是实例化 2.类和对象的说明 四:认识this 1.为什么要有this引用…

国内就能使用的chatgpt网页版,包含AIGC应用工具

Chatgpt的出现在多个领域带来了重要的影响。它能够显著提高我们的工作效率,无论是编写文案代码还是回答常见问题,都能在短时间内完成任务。通过Chatgpt,我们能够迅速获取所需答案。随着人工智能技术的不断发展,相信在未来AI能够带…

elasticsearch 8.5.3问题记录

一:解决 elasticsearch 高版本 warning: ignoring JAVA_HOMEC:\Program Files\Java\jdk-11; using bundled JDK if defined JAVA_HOME (set JAVA_HOME%JAVA_HOME%; )示例版本Elasticsearch 8.5.3 可以与 JDK 11 兼容,但不支持 JDK 17。确保选…

什么是基带信号? 什么是频带信号?

基带信号是指从信源中直接获取并反映其信息特征的原始信号,通常是低频信号,如音频信号或传感器信号。而频带信号则是对基带信号进行调制得到的信号,包含着基带信号的全部信息。 1.什么叫基带信号 基带信号是指来自信源的未经过调制的原始信…