MySQL- 存储引擎

news2025/1/19 23:20:41

MySQL体系结构

连接层

最上层是一些客户端和链接服务,包含本地sock 通信和大多数基于客户端/服务端工具实现的类似于 TCP/IP的通信。主要完成一些类似于连接处理、授权认证、及相关的安全方案。在该层上引入了线程 池的概念,为通过认证安全接入的客户端提供线程。同样在该层上可以实现基于SSL的安全链接。服务 器也会为安全接入的每个客户端验证它所具有的操作权限

服务层

第二层架构主要完成大多数的核心服务功能,如SQL接口,并完成缓存的查询,SQL的分析和优化,部 分内置函数的执行。所有跨存储引擎的功能也在这一层实现,如 过程、函数等。在该层,服务器会解 析查询并创建相应的内部解析树,并对其完成相应的优化如确定表的查询的顺序,是否利用索引等, 最后生成相应的执行操作。如果是select语句,服务器还会查询内部的缓存,如果缓存空间足够大, 这样在解决大量读操作的环境中能够很好的提升系统的性能

引擎层

存储引擎层, 存储引擎真正的负责了MySQL中数据的存储和提取,服务器通过API和存储引擎进行通 信。不同的存储引擎具有不同的功能,这样我们可以根据自己的需要,来选取合适的存储引擎。数据库 中的索引是在存储引擎层实现的

存储层

数据存储层, 主要是将数据(如: redolog、undolog、数据、索引、二进制日志、错误日志、查询 日志、慢查询日志等)存储在文件系统之上,并完成与存储引擎的交互

存储引擎介绍

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

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

Create table 表名() engine=innodb;

  1. 查询存储引擎

Show engines;

--- 查询建表语句

Show create table account;

存储引擎特点

InnoDB

InnoDB时一种兼顾高可靠性和高性能的通用存储引擎, 在MySQL5.5之后, InnoDB时默认的MySQL存储引擎

特点

DML操作遵循ACID模型, 支持事务

行级锁, 提高并发访问性能

支持外键foreign key约束, 保证数据的完整性和正确性

文件

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

参数: innodb_file_per_table

如果该参数开启,代表对于InnoDB引擎的表,每一张表都对应一个ibd文件

逻辑存储结构

表空间 : InnoDB存储引擎逻辑结构的最高层,ibd文件其实就是表空间文件,在表空间中可以 包含多个Segment段

段 : 表空间是由各个段组成的, 常见的段有数据段、索引段、回滚段等。InnoDB中对于段的管 理,都是引擎自身完成,不需要人为对其控制,一个段中包含多个区

区 : 区是表空间的单元结构,每个区的大小为1M。 默认情况下, InnoDB存储引擎页大小为 16K, 即一个区中一共有64个连续的页

页 : 页是组成区的最小单元,页也是InnoDB 存储引擎磁盘管理的最小单元,每个页的大小默 认为 16KB。为了保证页的连续性,InnoDB 存储引擎每次从磁盘申请 4-5 个区

行 : InnoDB 存储引擎是面向行的,也就是说数据是按行进行存放的,在每一行中除了定义表时 所指定的字段以外,还包含两个隐藏字段(后面会详细介绍)

MyISAM

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

特点

不支持事务, 不支持外键

支持表锁, 不支持行锁

访问速度快

文件

Xxx.sdi: 存储表结构信息

Xxx.MYD: 存储数据

Xxx.MYI: 存储索引

Memory

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

特点

内存存放

hash索引(默认)

文件

Xxx.sdi: 存储表结构信息

存储引擎的选择

对于复杂的应用系统, 还可以根据实际情况选择多种存储引擎进行组合

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

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

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

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

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

相关文章

通过自动装箱和拆箱解释所定义基础数据类型和其对应封装类的区别

文章目录 前言一、拆装箱的实质二、拓展1.数值超过128的Integer装箱2.Java内存分配 前言 在刷软中的时候涉及到了值传递和地址传递传参的区别,其中提到不管是将基础数据类型的变量传值给对象数据类型的变量还是反过来都属于值传递,究其原因就是期间发生了…

【本地模式】第一个Mapreduce程序-wordcount

【本地模式】:也就是在windows环境下通过hadoop-client相关jar包进行开发的,我们只需要通过本地自己写好MapReduce程序即可在本地运行。 一个Maprduce程序主要包括三部分:Mapper类、Reducer类、执行类。 map阶段:将每一行单词提…

XShell远程连接

xshell 是一个强大的安全终端模拟软件,它支持SSH1,SSH2以及microsoft windows 平台的TELNET协议。xshell通过互联网到远程主机的安全连接。 xshell可以在windows界面下来访问远程终端不同系统下的服务器,从而比较好的达到远程控制终端的目的。 步骤一 …

MySQL- 索引

索引是帮助MySQL高效获取数据的数据结构(有序)。在数据之外, 数据库系统还维护着满足特定查找算法的数据结构, 这些数据结构以某种方式引用数据, 这样就可以在这些数据结构上实现高级查找算法, 这种数据结构就是索引。 索引结构 MySQL的索引是在存储层实现的, 不同的存储引擎有…

网友总结:面试超过一个小时,通过概率更低;面试时长在半小时以内,通过概率更高!...

面试时长跟通过概率有关系吗? 一位网友分享了自己的求职感想: 面试过程越长,差不多一个小时或者超过一个小时,问得越详细,通过的可能性越低。因为问得越细,说明这个公司越挑,需要候选人匹配度越…

【C++ 入坑指南】(05)数据类型

文章目录 一、整型sizeof 关键字 二、实型(浮点型)三、字符型四、字符串型4.1 C 风格字符串4.2 C 引入的 string 类类型 五、布尔类型(bool)六、类型转换6.1 静态转换(Static Cast)6.2 动态转换&#xff08…

软考A计划-真题-分类精讲汇总-第六章(软件工程)

点击跳转专栏>Unity3D特效百例点击跳转专栏>案例项目实战源码点击跳转专栏>游戏脚本-辅助自动化点击跳转专栏>Android控件全解手册点击跳转专栏>Scratch编程案例 👉关于作者 专注于Android/Unity和各种游戏开发技巧,以及各种资源分享&am…

阿里云服务器安装宝塔Linux面板教程图解

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…

【mongoDB】mongodb权限验证 || mongodb重启 || mongodb常用命令

mongodb版本号 6.0 前言 mongoDB刚开始无需密码登录mongoDB有3默认数据库,分别为: admin 超级用户,能对所有数据库操作,执行管理员命令config 分片集群配置的数据库local 分片集群锁信息的集合test 这个数据库一般是隐式创建的&…

新书出版了(文末送书)

大家好,我是麦哥。 最近一位好友的新书出版了,由衷的替他开心,赶紧来支持一波。 新书长这样 这本书的作者是前中兴高级工程师,某知名培训机构的教学总监,现于某研究所担任重要的研发工作,我喜欢叫他彭老师。…

路径规划算法:基于蚁狮优化的路径规划算法- 附代码

路径规划算法:基于蚁狮优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蚁狮优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蚁狮…

路径规划算法:基于蝗虫优化的路径规划算法- 附代码

路径规划算法:基于蝗虫优化的路径规划算法- 附代码 文章目录 路径规划算法:基于蝗虫优化的路径规划算法- 附代码1.算法原理1.1 环境设定1.2 约束条件1.3 适应度函数 2.算法结果3.MATLAB代码4.参考文献 摘要:本文主要介绍利用智能优化算法蝗虫…

Python爬虫之美丽的汤——BeautifulSoup

本文概要 本篇文章主要介绍利用Python爬虫之美丽的汤——BeautifulSoup,适合练习爬虫基础同学,文中描述和代码示例很详细,干货满满,感兴趣的小伙伴快来一起学习吧! 是不是以为今天要教大家怎么做饭?确实&…

MATLAB图像处理:图像分割、特征提取和目标识别的应用和优化

MATLAB图像处理:图像分割、特征提取和目标识别的应用和优化 作为一种常用的图像处理工具,MATLAB在图像分割、特征提取和目标识别等方面具有广泛的应用。本文将详细介绍这三个方面的应用和优化。 第一章:图像分割 图像分割是将一幅图像划分成…

阿里云服务器安装宝塔面板教程图解(超详细)

使用阿里云服务器安装宝塔面板教程,阿里云服务器网以CentOS操作系统为例,安装宝塔Linux面板,先远程连接到云服务器,然后执行宝塔面板安装命令,系统会自动安装宝塔面板,安装完成后会返回面板地址、账号和密码…

Django如何把SQLite数据库转换为Mysql数据库

大部分新手刚学Django开发的时候默认用的都是SQLite数据库,上线部署的时候,大多用的却是Mysql。那么我们应该如何把数据库从SQLite迁移转换成Mysql呢? 之前我们默认使用的是SQLite数据库,我们开发完成之后,里面有许多数…

『python爬虫』20. 用协程爬取一本小说(保姆级图文)

目录 1. 分析目标网站1.1 寻找所有章节信息1.2 寻找章节内容 2. 爬虫思路获取得到的信息首先要同步协程获取所有章节标题和cid写入异步任务然后根据章节标题和cid获取章节内容 3. 完整实现代码总结 欢迎关注 『python爬虫』 专栏,持续更新中 欢迎关注 『python爬虫』…

linux命令文本命令之~~~ sort ~~ tr ~~cut ~~ uniq ~~split~~~paste~~eval

目录 一. sort命令二. uniq 命令三. tr命令四. cut命令五 . split六. paste 合并文件内容的列七. eval命令 一. sort命令 以行为单位对文件内容进行排序,也将他根据不同的数据类型来排序 比较原则是从首字符向后,依次按ASCII码进行比较,最后…

龟兔赛跑,环形链表解题思路:用兔子的速度,龟的智慧,和链表的结构,解决力扣难题

本篇博客会讲解力扣“141. 环形链表”的解题思路,这是题目链接。 审题 先来审题: 以下是输出示例: 以下是提示: 以下是进阶: 思路 本题有一种非常巧妙的解法:快慢指针法,又称龟兔赛跑法…

SpringBoot——默认页面在哪里?

简单介绍: 在之前我们创建了一个SpringBoot的应用程序,并且我们也启动了,但是我们都是在postman或者是在控制台看到了我们的界面,那么在浏览器中看到的界面其实只有一个: 这个界面其实就是SpringBoot的报错默认界面&a…