当前位置: 首页 > news >正文

Mysql - 存储引擎

一 MYSQL体系结构简介

        MYSQL的体系结构可以分为四个层级,从上往下依次为:

        1. 连接层:

                最上层为客户端以及一些连接服务,包含连接操作,例如JAVA想要与MYSQL建立连接就需要用到JDBC,PHP语言与Python也可以连接到MYSQL,建立连接。连接层主要用于完成一些连接处理,例如用户校验,账号密码是否正确,以及对应的授权认证,对于用户的权限管理。服务器也会为安全接入的每一个客户端验证其所具有的操作权限

        2. 服务层:

                第二层架构服务层是MYSQL大多数核心服务完成的层级,例如SQL接口,完成缓存的查询,以及对于SQL的分析和优化,以及跨存储引擎的功能(包括过程,函数等)

        3. 引擎层:

                引擎层包含了多个引擎,例如InnoDB, MyISAM, Memory,  NDB, Archive等,引擎层我们可以将其简单的理解为一个可插拔式的存储引擎,我们需要哪一个存储引擎直接进行选择即可,如果这个存储引擎当中没有我们当前需要的,我们甚至还可以自定义存储引擎进行使用。还需要注意的一点是,存储引擎实际上就是一种存储方式,索引的实现就是在引擎当中实现的,那就是说各个存储引擎之间其实是不一样的,根据我们的需要进行选取即可。MYSQL自5.5之后,默认的就是InnoDB引擎。

        4. 存储层:

                存储层当中用来存放我们对应数据库中的详细信息,主要是讲数据存储在文件系统之上,并且完成与存储引擎之间的交互。

二 3种存储引擎特点

        MYSQL支持多种存储引擎,在MYSQL查看当前支持的存储引擎,只需要输入

show engines

        即可查看对应的存储引擎,这里我们也能发现,InnoDB是默认的存储引擎,支持事务,VA连接 ,行级锁等

        并且在这些存储引擎当中,我们发现只有InnoDB支持事务,即为事务性存储引擎。 

        1. InnoDB

                1>特点:

                        DML(对于表当中的数据进行增删改等操作)操作遵循ACID(原子性,隔离性,持久性,一致性)模型,并且支持事务

                        支持行级锁,能够大大提高并发访问量

                        之处外键Foreign Key约束,加强表与表之间的关联,保证相关联的数据的完整性和一致性。

                2>磁盘文件

                        所有使用InnoDB引擎的表都会对应一个xxx.ibd的文件,xxx代表对应的表名,内部存储对应表的结构(frm, sdi)以及数据,索引等。对应存在一个参数 innodb_file_per_file 看名字可以知道,这个参数是决定对应是多张表当中的数据存储在一个文件当中,还是一个表对应一个InnoDB引擎的表张文件,MYSQL默认将此参数默认设置为TRUE。此外,还需要注意的一点是,存储引擎实际是针对表张的,也就是说一个数据库当中其实可以有存在多个不同引擎的表。

          2.MyISAM

                1>特点:

                        MyISAM是MYSQL早期的默认存储引擎,其特点是:

                        不知处事务,不支持外键

                        支持范围比较大的表锁,但是不支持行锁

                        访问速度相比较于InnoDB更快

                2>文件

                        MyISAM的数据的保存主要依靠三个文件

                        xxx.sdi:存储表结构信息

                        xxx.MYD:存储表的数据信息

                        xxx.MYI:存储表的索引

          3.Memory

                1>特点:

                        Memory引擎的表数据是临时存储在内存当中的,存储在内存当中的数据就会受到对应硬件的影响,一旦断电或者其他情况导致内存数据清空,那么对应的数据就会丢失,因此其只能将这些表当作是临时表,或者是一种缓存进行使用。

                        此外,其之处hash索引。扩展: 一些索引引擎不选用HASH作为索引,实际上是因为其没有办法做到范围查询,我们如果想要一次性的查询多个数据,依据一个范围条件查询。这个时候HASH所以就无法做到,依旧只能够一条一条进行查询,大大降低了查询效率。

                2>文件:

                        文件存储上,因为其内容实际上都是存储在内存当中的,所以本地文件仅仅保留了对应的表结构 xxx.sdi

        三种存储引擎异同点总结

                        

http://www.lryc.cn/news/499223.html

相关文章:

  • 借助 CC-Link IE FB 转 Profinet 网关实现西门子 PLC 接入三菱 PLC 系统的解决策略
  • 未完成_RFdiffusion应用案例_从头设计pMHC的结合剂
  • python使用h5py保存数据
  • ubuntu24.04利用selenium控制浏览器的方法
  • Thonny IDE + MicroPython + ESP32 + 0.96寸OLED(IIC) 显示任意字符
  • centos7 扩容
  • FreeRTOS实现UART通信
  • 【从CURD到全栈成长】Java后端如何提升自己?
  • 动态计算加载图片
  • 利用R包QstFstComp包进行Qst-Fst分析
  • ASP.NET Core8.0学习笔记(二十五)——EF Core Include导航数据加载之预加载与过滤
  • ubuntu常用的设置
  • 基于框架的逻辑回归:原理、实现与应用
  • Charts 教程:创建交互式图表的基础
  • VTK知识学习(20)- 数据的存储与表达
  • springboot网站开发-使用redis作为定时器控制手机号每日注册次数
  • IntelliJ+SpringBoot项目实战(28)--整合Beetl模板框架
  • Kafka-Connect源码分析
  • 项目五 李白个人生平(资源)
  • 计算机视觉与各个学科融合:探索新方向
  • 数据分析类论文通过stata进行数据预处理(一)
  • 力扣——1.返回字符串中第一个唯一的字符;2.把字符串转换成整数(C++)
  • M-LAG【根桥方式】
  • 新书速览|循序渐进Node.js企业级开发实践
  • Xlsxwriter生成Excel文件时TypeError异常处理
  • 【NLP高频面题 - LLM架构篇】大模型使用SwiGLU相对于ReLU有什么好处?
  • 2021 年“泰迪杯”数据分析技能赛B 题肥料登记数据分析
  • 网络原理之 IP 协议
  • 在 Spring Boot 项目中使用 Thymeleaf 时,通常情况下,你需要配置热加载(Hot Reload)来在开发过程中更快速地看到页面的变化。
  • arm-linux GPIO控制-脚本及shell格式