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.mzph.cn/pingmian/63334.shtml

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

相关文章

基于MinIO打造高可靠分布式“本地”文件系统

MinIO是一款高性能的对象存储服务,而S3协议是由亚马逊Web服务(AWS)制定的一种标准协议,用于云存储服务之间的数据交换。MinIO与S3协议的关系在于,MinIO实现了S3协议的接口,这意味着用户可以使用与AWS S3相同…

电子应用设计方案-43:智能手机充电器系统方案设计

智能手机充电器系统方案设计 一、引言 随着智能手机的广泛应用,对充电器的性能、效率和安全性提出了更高的要求。本方案旨在设计一款高效、安全、兼容多种快充协议的智能手机充电器。 二、系统概述 1. 系统目标 - 提供快速、稳定、安全的充电功能。 - 兼容主流的智…

vue3项目最新eslint9+prettier+husky+stylelint+vscode配置

一、eslint9和prettier通用配置 安装必装插件 ESlint9.x pnpm add eslintlatest -DESlint配置 vue 规则 , typescript解析器 pnpm add eslint-plugin-vue typescript-eslint -DESlint配置 JavaScript 规则 pnpm add eslint/js -D配置所有全局变量 globals pnpm add globa…

【环境搭建】WordPress本地部署搭建及历史版本插件安装(windows系统)

🏘️个人主页: 点燃银河尽头的篝火(●’◡’●) 如果文章有帮到你的话记得点赞👍收藏💗支持一下哦 【环境搭建】WordPress本地部署搭建及历史版本插件安装(windows系统) WordPress搭建环境部署(…

qt QTemporaryFile详解

1、概述 QTemporaryFile类是Qt框架中用于创建和管理临时文件的类。它提供了一个安全且便捷的方式来生成唯一的临时文件,这些文件通常用于存储临时数据,如缓存、草稿或中间结果。QTemporaryFile确保了临时文件的唯一性,避免了文件名冲突&…

Gitee配置以及如何将本地项目提交到远程仓库

文章目录 准备远程仓库配置注册新建仓库 配置git 生成ssh,输入以下命令,然后连敲三次回车键配置公钥本地代码上传 准备 1.本地下载git 2.注册远程仓库账号 远程仓库配置 注册 官网:https://gitee.com 完成注册 新建仓库 头像->设置-…

基于Java和Vue开发的漫画阅读软件漫画阅读小程序漫画APP

前景分析 受众广泛:漫画的受众群体广泛,不仅限于青少年,还涵盖了成年人等多个年龄层和社会阶层。漫画文化在全球范围内的影响力不断扩大,未来漫画软件创业可以考虑全球市场的拓展。 市场需求大:数字化阅读趋势下&…

2024.12.2——[极客大挑战 2019]Secret File 1

知识点:抓包 代码审计 filter伪协议 一、解题步骤 step 1 查看源代码中的信息 查看源代码发现一个php文件:[./Archive_room.php](http://72df1f22-85bf-47bb-b23a-efcaf88701d4.node5.buuoj.cn:81/Archive_room.php) 点进去后发现没什么用&#xff0c…

距离与AoA辅助的三维测距算法,适用于自适应基站数量的情况。订阅专栏后可直接查看完整源代码

本MATLAB 代码实现了一个基于距离与到达角(AoA)的三维测距系统,主要用于在动态环境中估计目标物体的位置。提供本算法与仅侧角(AoA)的定位误差对比 文章目录 代码运行结果源代码代码功能概述主要步骤分析初始化部分AOA定位绘图部分输出部分代码的应用和意义总结代码运行结…

[241206] X-CMD 发布 v0.4.15:env 升级,mirror 支持华为/腾讯 npm 镜像,pb-wayland 剪贴板

目录 X-CMD 发布 v0.4.15📃Changelog📦 env|pkg🪞 mirror📑 pb🎨 theme|starship|ohmyposh🤖 chat📝 man✅ 升级指南 X-CMD 发布 v0.4.15 📃Changelog 📦 env|pkg 新增…

Python办公—DataMatrix二维条码制作

目录 专栏导读1、库的介绍2、库的安装3、核心代码4、完整代码总结专栏导读 🌸 欢迎来到Python办公自动化专栏—Python处理办公问题,解放您的双手 🏳️‍🌈 博客主页:请点击——> 一晌小贪欢的博客主页求关注 👍 该系列文章专栏:请点击——>Python办公自动化专…

Webpack Tree Shaking 技术原理及应用实战,优化代码,精简产物

前言 在前端开发中,优化代码体积和提升应用性能是至关重要的课题。Webpack 提供了多种优化手段来帮助开发者实现这一目标,Tree Shaking 就是其中一种非常重要的优化技术,它通过在编译阶段移除未被使用的代码模块,从而显著减小最终…

『RabbitMQ』 windows下 安装RabbitMQ 并在Python中使用测试

目录 1. 安装ERLANG2. 安装RabbitMQ3. 新建用户Python的测试代码 生产者和消费者总结欢迎关注 『RabbitMQ』 专栏,持续更新中 欢迎关注 『RabbitMQ』 专栏,持续更新中 1. 安装ERLANG 下载之前先看兼容性,这里我打算下载26.1版本的Erlang以适配RabbitMQ cloud.emqx.com/cons…

SwiftUI 列表(或 Form)子项中的 Picker 引起导航无法跳转的原因及解决

概述 在 SwiftUI 的界面布局中,列表(List)和 Form 是我们秃头码农们司空见惯的选择。不过大家是否知道:如果将 Picker 之类的视图嵌入到列表或 Form 的子项中会导致导航操作无法被触发。 从上图可以看到:当在 List 的…

Ubuntu Linux 文件、目录权限问题

本文为Ubuntu Linux操作系统- 第五弹 此文是在上期文件目录的内容操作基础上接着讲权限问题 上期回顾:Ubuntu Linux 目录和文件的内容操作 文件访问者身份与文件访问权限 Linux文件结构 所有者(属主)所属组(属组)其他…

2020年国赛高教杯数学建模E题校园供水系统智能管理解题全过程文档及程序

2020年国赛高教杯数学建模 E题 校园供水系统智能管理 原题再现 校园供水系统是校园公用设施的重要组成部分,学校为了保障校园供水系统的正常运行需要投入大量的人力、物力和财力。随着科学技术的发展,校园内已经普遍使用了智能水表,从而可以…

最新版Chrome谷歌加载ActiveX控件之金格iWebOffice2015控件

allWebPlugin简介 allWebPlugin中间件是一款为用户提供安全、可靠、便捷的浏览器插件服务的中间件产品,致力于将浏览器插件重新应用到所有浏览器。它将现有ActiveX控件直接嵌入浏览器,实现插件加载、界面显示、接口调用、事件回调等。支持Chrome、Firefo…

【Flink-scala】DataStream编程模型之水位线

DataStream API编程模型 1.【Flink-Scala】DataStream编程模型之 数据源、数据转换、数据输出 2.【Flink-scala】DataStream编程模型之 窗口的划分-时间概念-窗口计算程序 3.【Flink-scala】DataStream编程模型之 窗口计算-触发器-驱逐器 文章目录 DataStream API编程模型前言…

iOS平台接入Facebook登录

1、FB开发者后台注册账户 2、完善App信息 3、git clone库文件代码接入 4、印尼手机卡开热点调试 备注: 可能遇到的问题: 1、Cocos2dx新建的项目要更改xcode的git设置,不然卡在clone,无法在线获取FBSDK 2、动态库链接 需要在…

unity打包web,发送post请求,获取地址栏参数,解决TypeError:s.replaceAll is not a function

发送post请求 public string url "http://XXXXXXXXX";// 请求数据public string postData "{\"user_id\": 1}";// Start is called before the first frame updatevoid Start(){// Post();StartCoroutine(PostRequestCoroutine(url, postData…