[MySQL--进阶篇]存储引擎的体系结构、简介、特点、选择

前言

在这里插入图片描述

⭐Hello!这里是欧_aita的博客。
⭐今日语录:不要在乎别人怎么看你,因为他们根本就没有时间,他们只关心他们自己。
⭐个人主页:欧_aita
ψ(._. )>⭐个人专栏:
数据结构与算法
MySQL数据库

在这里插入图片描述

在这里插入图片描述

存储引擎

  • 前言
  • MySQL体系结构📕
  • 存储引擎简介📕
    • 在创建表时,指定存储引擎
    • 查看当前数据库支持的存储引擎
  • 存储引擎特点📕
    • InnoDB
      • 逻辑存储结构
    • MyISAM
    • Memory
    • 区别
  • 存储引擎选择📕

MySQL体系结构📕

在这里插入图片描述

  • 连接层 (连接池)最上层是一些客户端和链接服务,主要完成类似于连接处理、授权认证、及相关的安全方案。服务器也会为安全接入的每个客户验证它所具有的操作权限。
  • 服务层 (SQL接口 解析器 查询优化器 缓存)第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成存储的查询,SQL的分析与优化,部分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。
  • 引擎层 (可插拔存储引擎)存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。
  • 存储层 (磁盘)主要是将数据存储在文件系统之上,并完成与存储引擎的交互。

存储引擎简介📕

存储引擎就是存储数据、建立索引、更新/查询数据等技术的实现技术的实现方式。存储引擎是基于表的,而不是基于库的,所以存储引擎也可被称为表类型。

在创建表时,指定存储引擎

在5.5版本之后,默认的存储引擎时InnoDB

CREATE TABLE 表名(字段1 字段1类型 [COMMENT 字段1注释],......字段n 字段n类型 [COMMENT 字段n注释]
)ENGINE = INNODB [COMMENT 表注释];

查看当前数据库支持的存储引擎

SHOW ENGINES;

在这里插入图片描述

存储引擎特点📕

InnoDB

  • 介绍

InnoDB是一种兼顾高可靠性和高性能的通用存储引擎,在MySQL 5.5之后,InnoDB是默认的MySQL存储引擎。

  • 特点

DML操作遵循ACID模型,支持事务
行级锁,提高并发访问性能;
支持外键FOREIGN KEY约束,保证数据的完整性和正确性;

  • 文件

xxx.ibd:xxx代表的是表名,InnoDB引擎的每张表都会对应这样一个表空间文件,存储该表的表结构(frm、sdi)、数据和索引。
参数:innoDB_file_per_table

在这里插入图片描述
可以看到表空间文件都是以idb为后缀(前提是创建表的时候默认使用InnoDB存储引擎)
在这里插入图片描述
在命令行中可以看到idb文件中的内容。

逻辑存储结构

在这里插入图片描述
每个区的空间是固定的(1M),每一页的空间也是固定的(16K),所以每个区可存储的页个数也是固定的(64)。

MyISAM

  • 介绍

MyISAM是MySQL早期的默认存储引擎。

  • 特点

不支持事务,不支持外键
支持表锁,不支持行锁
访问速度快

  • 文件

xxx.sdi:存储表结构信息
xxx.MYD:存储数据
xxx.MYI:存储索引

在sdi文件中放的是json格式语言
可以在json.cn网站翻译为SQL语言
在这里插入图片描述

Memory

  • 介绍

Memory引擎的表数据时存储在内存中的,由于受到硬件问题、或断电问题的影响,只能将这些表作为临时表或缓存使用。

  • 特点

内存存放
Hash索引(默认)

  • 文件

xxx.sdi:存储表结构信息

区别

特点InnoDBMyISAMMemory
存储限制64TB
事务安全支持--
锁机制行锁表锁表锁
B+tree索引支持支持支持
Hash索引---
全文索引支持 (5.6版本之后)支持-
空间使用N/A
内存使用中等
批量插入速度
支持外键支持--

存储引擎选择📕

在选择存储引擎时,因该根据应用系统的特点选择合适的存储引擎。对于复杂的应用系统,还可以根据实际情况选择多种存储引擎进行组合。

  • InnoDB

是MySQL的默认存储引擎支持事务、外键。如果应用对事务的完整性有比较高的要求,在并发条件下要求数据的一致性,数据操作除了插入和查询之外,还包含很多更新、删除操作,那么InnoDB存储引擎是比较合适的选择。

  • MyISAM

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

  • Memory

将所有的数据保存在内存中,访问速度快,通常用于临时表及缓存。Memory的缺陷就是对表的大小有限制,太大的表无法缓存在内存中,而且无法保障数据的安全性。

在这里插入图片描述

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

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

相关文章

李宏毅gpt个人记录

参考: 李宏毅机器学习--self-supervised:BERT、GPT、Auto-encoder-CSDN博客 用无标注资料的任务训练完模型以后,它本身没有什么用,GPT 1只能够把一句话补完,可以把 Self-Supervised Learning 的 Model做微微的调整&am…

32.768KHz时钟RTC晶振精度PPM值及频差计算

一个数字电路就像一所城市的交通,晶振的作用就是十字路口的信号灯,因此晶振的品质及其电路应用尤其关键。数字电路又像生命体,它的运行就像人身体里的血液流通,它不是由单一的某个器件或器件单元构成,而是由多个器件及…

【Spring Boot 源码学习】ApplicationListener 详解

Spring Boot 源码学习系列 ApplicationListener 详解 引言往期内容主要内容1. 初识 ApplicationListener2. 加载 ApplicationListener3. 响应应用程序事件 总结 引言 书接前文《初识 SpringApplication》,我们从 Spring Boot 的启动类 SpringApplication 上入手&am…

如何查询川菜食材配料的API接口

在当今的美食文化中,菜谱不只是一张简单的食谱,更是了解美食文化和饮食知识的重要途径。然而,若没有准确的食材配料,烹制出的每道菜品都将难以达到完美的味道。因此,为了更好地满足人们对于菜谱和食谱的需求&#xff0…

linux权限管理以及shell

1.shell 1.1什么是shell? shell即外壳,是运行在linux系统上的一个脚本语言,包裹在linux内核的外面。我们常说的linux操作系统实际上是linux内核。我们使用的所有指令都是一个个程序,而shell指令就是一个将我们用户的操作翻译给linux内核的程…

软件设计之组合模式

组合模式:将对象组合成树形结构。 案例:公司管理。一个公司可以分总公司和分公司,无论是总公司还是分公司都有自己的部门,如人力资源管理部门、财务部门。分公司可以建立自己在不同地域的办事处。请使用组合模式打印出某个公司的…

SpringSecurity6 | 登陆后的跳转

SpringSecurity6 | 自定义认证规则 ✅作者简介:大家好,我是Leo,热爱Java后端开发者,一个想要与大家共同进步的男人😉😉 🍎个人主页:Leo的博客 💞当前专栏: Ja…

第九天:信息打点-CDN绕过篇amp;漏洞回链amp;接口探针amp;全网扫描amp;反向邮件

信息打点-CDN绕过篇 cdn绕过文章:https://www.cnblogs.com/qiudabai/p/9763739.html 一、CDN-知识点 1、常见访问过程 1、没有CDN情况下传统访问:用户访问域名-解析服务器IP–>访问目标主机 2.普通CDN:用户访问域名–>CDN节点–>…

网络层重点协议——IP协议详解

✏️✏️✏️今天给大家分享的是网络层的重点协议——IP协议。 清风的CSDN博客 🛩️🛩️🛩️希望我的文章能对你有所帮助,有不足的地方还请各位看官多多指教,大家一起学习交流! ✈️✈️✈️动动你们发财的…

阿里内部教程Jmeter 性能测试常用图表、服务器资源监控

性能测试常用图表 插件安装 步骤 1:安装插件管理器 在 Jmeter 官网上下载插件管理器 Plugins-manager-1.3.jar将 jar 包放入到 lib\ext 目录下重启 Jmeter,可以在选项下看到 Plugins Manager 选项 步骤 2:安装指定的插件 打开 Plugins Ma…

JVM虚拟机系统性学习-运行时数据区(堆)

运行时数据区 JVM 由三部分组成:类加载系统、运行时数据区、执行引擎 下边讲一下运行时数据区中的构成 根据线程的使用情况分为两类: 线程独享(此区域不需要垃圾回收) 虚拟机栈、本地方法栈、程序计数器 线程共享(数…

DataGrip常见问题

查询语句结果没有输出在output中 进行如下配置 配置后查询结果输出在output中 左侧数据库链接信息导航栏被隐藏 以上导航栏被隐藏,按下图操作调出

【Qt开发流程】之容器类2:使用STL风格迭代器进行遍历

概述 对于每个容器类,都有两种stl风格的迭代器类型:一种提供只读访问,另一种提供读写访问。应该尽可能使用只读迭代器,因为它们比读写迭代器快。 STL迭代器的API以数组中的指针为模型。例如,操作符将迭代器推进到下一项&#xf…

Java开发工具:IDEA 2023.3(WinMac)中文激活版

IntelliJ IDEA 2023是一款由JetBrains公司出品的集成开发环境(IDE),专为程序员设计。它以智能、高效和人性化为主要特点,致力于提高开发人员的生产力,帮助程序员更快、更好地编写代码。 在智能功能方面,Int…

Panalog 日志审计系统 sprog_deletevent.php SQL 注入漏洞复现

0x01 产品简介 Panalog大数据日志审计系统定位于将大数据产品应用于高校、 公安、 政企、 医疗、 金融、 能源等行业之中,针对网络流量的信息进行日志留存,可对用户上网行为进行审计,逐渐形成大数据采集、 大数据分析、 大数据整合的工作模式…

c语言一维数组总结详解

目录 介绍: 一维整型数组: 声明: 初始化: 打印输出: 输出结果: 浮点型数组: 代码: 运行结果: 补充: 一维字符数组: 字符数组声明及初始…

Python轴承故障诊断 (二)连续小波变换CWT

目录 前言 1 连续小波变换CWT原理介绍 1.1 CWT概述 1.2 CWT的原理和本质 2 基于Python的CWT实现与参数对比 2.1 代码示例 2.2 参数介绍和选择策略 2.2.1 尺度长度: 2.2.2 小波函数(wavelet): 2.3 凯斯西储大学轴承数据的…

《算法与数据结构》答疑

答疑 问题一问题二问题三问题四 问题一 在匹配成功时,在返回子串位置那里,为什么不是i-t的长度啊,为什么还要加一 问题二 问题三 问题四 问:如果题目让我们构造一个哈夫曼树,像我发的这个例题的话,我画成我…

深度学习与计算机视觉技术的融合

深度学习与计算机视觉技术的融合 一、引言 随着人工智能技术的不断发展,深度学习已经成为了计算机视觉领域的重要支柱。计算机视觉技术能够从图像和视频中提取有用的信息,而深度学习则能够通过学习大量的数据来提高计算机视觉技术的性能。本文将探讨深…

贪心算法和动态规划

目录 一、简介 二、贪心算法案例:活动选择问题 1.原理介绍 三、动态规划案例:背包问题 1.原理介绍 四、贪心算法与动态规划的区别 五、总结 作者其他文章链接 正则表达式-CSDN博客 深入理解HashMap:Java中的键值对存储利器-CSDN博客…