MySQL数据库的介绍
目录
1.什么是MySQL数据库
2.MySQL数据库的设计
MySQL的进一步认识
MySQL的客户端 —— mysql
MySQL的服务端 —— mysqld
3.MySQL数据库的架构
MySQL架构图
连接层
服务层
存储引擎层
文件系统层
4.MySQL的存储引擎
认识存储引擎
MySQL中的存储引擎
存储引擎之间对比
1.什么是MySQL数据库
众所周知,数据库的作用是用来存储数据的,但是在数据库被发明出来之前,人们是依靠文件来存储数据,相信你也有这样的疑问,存储数据用文件不是挺好的吗,为什么还要有数据库呢?
因为,我们把数据存储起来,并不单单是为了存储数据,更重要的是,我们还需要使用数据,对数据做必要的增、删、改、查;一般的文件确实提供了数据的存储功能,但是并没有提供非常好的数据管理能力,使用文件存储数据有以下几个缺点
- 数据的安全性难以保证
- 不利于数据的查询和管理
- 使用程序操作文件不便
这就要求有一种新的 能够存储数据的 并且还具有对数据的管理能力的事物来解决文件的这个短板,于是,计算机的大佬们设计出了更加利于管理数据的东西 —— 数据库。
那数据库是什么呢?数据库就是一种提供数据存储能力的文件,有自己的格式,能够让 mysqld 这样的服务直接进行增删查改,同时,数据库也提供了一套数据存储方案。
而MySQL数据库就是数据库的一种具体实现,是一种具体的存储解决方案。
2.MySQL数据库的设计
MySQL的进一步认识
前面说了MySQL数据库是一套具体的存储解决方案,那这套存储解决方案是如何设计的呢?
我们可以使用 netstat -ltp 命令查看一下系统中运行的网络服务,列出所有处于监听状态的TCP端口以及每个端口上运行的程序名称和进程PID

我们可以看到 mysql 居然位列其中,说明MySQL是一种网络程序,也就是说,MySQL被设计成了一套网络服务程序。
网络程序往往都具有客户端程序 和 服务器端程序,MySQL也不例外,MySQL的客户端程序是 mysql,MySQL的服务器端程序是 mysqld; 我们可以使用 which 命令查看MySQL 客户端程序 和 服务器端程序 所在的路径

所以我们可以进一步认识MySQL,MySQL的本质是一套基于CS模式的,提供数据存取服务的网络程序。
MySQL的客户端 —— mysql
MySQL的客户端是连接MySQL服务器并进行数据库操作的工具。这些客户端可以是命令行界面(CLI)的,也可以是图形用户界面(GUI)的;用户可以通过 mysql 向MySQL服务端 发送SQL语句(一种操作数据库的语言),进而来操作数据库,对数据库进行管理。 用户上层只需要输入SQL语句,MySQL的服务端会执行相应的语句,实现用户想要的结果。
MySQL的服务端 —— mysqld
MySQL的服务端负责处理客户端的连接请求、执行SQL语句、管理数据库文件和数据等任务。
服务端必须要能够为客户端提供良好稳定的运行服务,这就要求服务端的设计足够优秀、足够合理;因此,MySQL的服务端被设计成了四个层次,分别是连接层、服务层、存储引擎层、文件系统层,这四层统称为MySQL数据库的架构。
3.MySQL数据库的架构
MySQL架构图

连接层
功能:连接层是MySQL架构中的最外层,负责处理客户端与MySQL服务器之间的连接和通信。它主要负责监听客户端的连接请求,进行权限验证,并维持和管理连接。(解决安全和链接管理)
组件:
- Connectors:MySQL为各种编程语言提供了访问接口(如JDBC),通过这些接口,客户端程序可以连接到MySQL服务器。
- 连接池(Connection Pool):为了提高性能和响应速度,MySQL实现了连接池机制。连接池可以复用已经创建的数据库连接,减少创建和销毁连接的开销。同时,连接池还可以限制同时存在的连接数,避免服务器资源耗尽。
服务层
功能:服务层是MySQL架构中的核心部分,负责处理来自客户端的SQL请求,包括SQL解析、优化、缓存以及执行等。(词法语法分析。做词法语法分析,以及sql语句的优化)
组件:
- SQL Interface:是整个数据系统与用户进行交互的关键部分,负责接收并处理用户的SQL命令。
- Parser(语法分析器):将用户输入的SQL命令转换成MySQL内部可以理解的指令,并进行词法分析和语法分析,最终生成一棵解析树。
- Optimizer(查询优化器):根据解析树生成最优的执行计划,包括选择合适的索引、确定连接顺序等,以提高查询性能。
- Cache & Buffers(缓存):在较早的MySQL版本中,存在查询缓存机制,用于缓存查询结果以提高查询性能。但从MySQL 8.0开始,查询缓存被删除,因为维护缓存的开销可能大于其带来的性能提升。此外,MySQL还包含其他类型的缓存,如表缓存、索引缓存等。
- 执行器:根据优化器生成的执行计划,调用存储引擎提供的API来执行SQL语句,并返回查询结果给客户端。
MySQL架构中的这一层的工作有些类似于编译器的工作,只是解析和优化语句,并不直径执行用户输入的语句。
存储引擎层
功能:存储引擎层负责数据的存储和提取,是MySQL架构中最底层也是最重要的部分之一。MySQL支持多种存储引擎,每种存储引擎都有其特点和适用场景。帮我们完成具体的数据存储方案。(这一层才是真正干活的)
组件:
- InnoDB:MySQL的默认存储引擎,支持事务处理、行级锁定和外键等高级数据库功能。
- MyISAM:早期MySQL的默认存储引擎,但不支持事务处理,主要面向读密集型应
- Memory:将数据存储在内存中,访问速度极快,但重启数据库后数据会丢失。
- 其他存储引擎如Archive、Federated、CSV等,分别适用于不同的应用场景
文件系统层
功能:虽然文件系统层不直接体现在MySQL的官方架构图中,但它是存储引擎层与底层硬件之间的桥梁。文件系统层包含了MySQL的数据文件和日志文件等,是数据存储和访问的物理基础。
4.MySQL的存储引擎
认识存储引擎
MySQL的四层模型中,除了存储引擎层,其他三层都好理解。要想理解存储引擎,先要理解什么是引擎。
引擎二字的理解可以类比于汽车的发动机,发动机是用来驱动汽车进行运转的,MySQL的存储引擎也扮演着类似的角色。MySQL的存储引擎用来驱动这个数据库系统进行运转,它是数据库系统中负责数据存储、处理、保护和查询的核心组件,决定了数据库提供的功能、性能和特性。通过选择合适的存储引擎,可以优化数据库的性能和满足特定的应用需求。
具体来说,存储引擎是数据库中负责数据存储、处理、保护和查询的底层软件组织。它决定了数据库如何存储数据、如何为这些数据建立索引、以及如何进行数据的更新和查询等操作。不同的存储引擎采用不同的技术和方法来实现这些功能,因此它们提供的性能、功能和支持的特性也会有所不同。
在MySQL等数据库管理系统中,存储引擎是基于表的,而不是基于数据库的。这意味着在同一个数据库中,可以为不同的表选择不同的存储引擎,以满足不同的应用需求。例如,InnoDB存储引擎支持事务处理、行级锁定和外键约束等高级数据库功能,适合需要高可靠性和高性能的在线事务处理(OLTP)应用;而MyISAM存储引擎则提供了快速的读写速度和全文索引功能,适合以查询和插入操作为主的应用场景。
总结:存储引擎就是数据库管理系统如何存储数据、如何为存储的数据建立索引和如何更新、查询数据等技术的实现方法。
MySQL中的存储引擎
我们可以通过 show engines 在MySQL中查看存储引擎的种类。

可以看出MySQL支持多种存储引擎,这也是MySQL数据库的核心;其中默认的存储引擎是 InnoDB。
存储引擎之间对比

相关文章:
MySQL数据库的介绍
目录 1.什么是MySQL数据库 2.MySQL数据库的设计 MySQL的进一步认识 MySQL的客户端 —— mysql MySQL的服务端 —— mysqld 3.MySQL数据库的架构 MySQL架构图 连接层 服务层 存储引擎层 文件系统层 4.MySQL的存储引擎 认识存储引擎 MySQL中的存储引擎 存储引擎之…...
div内英文不换行问题以及解决方案
div内英文不换行问题以及解决方案 div盒子中文字换行问题:div中放中文的代码:div中放英文的代码: 解决办法注意 div盒子中文字换行问题: div设置宽度以后,如果div中放的是中文,默认文字超过div宽度会自动换…...
『功能项目』DOTween动态文字【26】
打开上一篇25协程生成怪物模型的项目, 本章要做的事情是用DOTween插件做一个动态文字效果 首先在资源商店中免费下载一个DOTween插件 新建脚本:DowteenFlicker.cs 编写脚本: using DG.Tweening; using UnityEngine; using UnityEngine.UI;pu…...
经验笔记:框架(Framework)与库(Library)
框架(Framework)与库(Library)的经验笔记 引言 在现代软件开发过程中,框架(Framework)与库(Library)是两个不可或缺的概念。虽然它们都是为了提升开发效率和服务复用性…...
每日一题——第八十七题
题目:给出年月日,计算该日期是这一年的第几天 #include<stdio.h> #include<stdbool.h>bool isLeapYear(int year) {return (year % 4 0 && year % 100 ! 0) || (year % 400 0); }int dayOfYear(int year, int month, int day) {/…...
CTF——简单的《WEB》
文章目录 一、WEB1、easysql2、baby_web3、baby_sql4、upload_easy5、easygame拓展1.1拓展1.2 6、ht_ssti7、包容乃大 一、WEB 1、easysql 题目描述: sql注入漏洞 1.常用的sql注入测试语句 2.sql注入bypass 解题思路 这边提示基本给的也很完整的,不…...
【Nacos】报错之服务实例类型不允许改变
在使用Nacos配置服务的实例类型的时候,对服务的实例类型进行修改。 之前的非临时实例,修改为临时实例后,报错: com.alibaba.nacos.api.exception.NacosException: errCode: 400, errMsg: Current service DEFAULT_GROUPproduct-…...
SRS流媒体服务器从入门到精通(其一,环境搭建)
欢迎诸位来阅读在下的博文~ 在这里,在下会不定期发表一些浅薄的知识和经验,望诸位能与在下多多交流,共同努力! 江山如画,客心如若,欢迎到访,一展风采 文章目录 一、SRS简介二、SRS的应用场景三、环境搭建…...
Java Native Interface (JNI) 简介
Java Native Interface (JNI) 概述 Java Native Interface (JNI) 是 Java 提供的一种接口,用于允许 Java 应用程序与本地(Native)代码进行交互。通过 JNI,Java 代码可以调用 C/C 等其他语言编写的库,反之亦然。JNI 的主…...
navigator.mediaDevices.getUserMedia检查用户的摄像头是否可用,虚拟摄像头问题
在Web开发中,检查用户的摄像头是否可用是一个常见的需求,尤其是在需要视频聊天或录制视频的应用程序中。navigator.mediaDevices.getUserMedia() API 提供了这一功能,它允许你请求访问用户的媒体设备,如摄像头和麦克风。虽然这个A…...
跨境网红营销SOP流程1.0丨出海笔记
品牌出海利用红人营销基本是标配了,KOL 社交媒体是绝对的带货神器。比如美国歌手蕾哈娜Rihanna 的美妆品牌 Fenty Beauty 上市开卖后40天就达到了1亿美元,火遍全球美妆圈。例子和废话少说,其实大小红人都有用。 之前几位大神已经在出海笔记分…...
Jedis,SpringDataRedis
快速入门 导入依赖 <!--jedis--><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>3.7.0</version></dependency><!--单元测试--><dependency><groupId>org.ju…...
增量模型的优点例题
答案:D 解析:增量模型可以快速开发一个样品供客户查看 选项B 早期的增量作为模型,从而可以加强系统后续需求的理解 一开始给客户一个样本,客户根据样品修改需求 选项C 增量模型就是开发一个个增量模型,供客户使用…...
求绝对值
计算并输出一个实数的绝对值。从键盘任意输入一个实数,不使用计算绝对值函数编程计算并输出该实数的绝对值 输入格式: 输入任一实数。 输出格式: 输出的绝对值包含两位小数。 输入样例: 在这里给出一组输入。例如: -2.5输出样例: 在这里给出相应的输出。…...
AlphaNovel的身份验证失败了..........
我的AlphaNovel的这个身份验证失败了,不知道失败原因是什么... 前两周在网上看到这个项目,在国外这个网站搬运国内小说,但是前提是要通过这个身份验证,可是我等了十多天,结果身份验证失败了,有也在做这个的同志吗? 你们身份验证怎么样...
Sapiens:人类视觉模型的基础
文章目录 摘要1、引言2、相关工作3、方法3.1、Humans-300M 数据集3.2、预训练3.3、二维姿态估计3.4、身体部位分割3.5、深度估计3.6、表面法线估计 4、实验4.1、实现细节4.2、二维姿态估计4.3、身体部位分割4.4、深度估计4.5、表面法线估计4.6、讨论 5、结论 摘要 我们介绍了 …...
“健康中国 医路无忧——公益联盟”积极响应,国内首支公益陪诊师志愿队伍正式成立
在快节奏的现代生活中,就医不再是简单的“看病”那么简单。面对复杂的医疗流程、专业的医学术语、以及在陌生环境中的焦虑,患者及家属往往感到无所适从。此时,陪诊服务如同一束光,照亮了就医之路,它的重要性不仅体现在…...
Java 创建对象方法的演变
1、普通 Java 代码 public class Rectangle {private int width;private int length;public Rectangle() {System.out.println("Hello World!");}public void setWidth(int widTth) {this.width widTth;}public void setLength(int length) {this.length length;}…...
Netty中用到了哪些设计模式
Netty作为一个高性能的网络通信框架,里面有很多优秀的代码值得我们学习,今天我们一起看下Netty中用到了哪些设计模式。 一、单例模式 Netty通过 NioEventLoop 将通道注册到选择器,并在事件循环中多路复用它们。其中提供了一个选择策略对象 S…...
第67期 | GPTSecurity周报
GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…...
OAuth 2.0 and OIDC 三大安全机制对比:State vs Nonce vs PKCE
一、问题背景 OAuth 2.0 和 OpenID Connect 的授权流程依赖浏览器重定向,这天然暴露了多种攻击面: 攻击类型描述CSRF攻击者诱导用户的浏览器携带恶意授权码完成绑定Token 重放窃取的 id_token 被重复提交给客户端授权码劫持恶意应用在同一设备上拦截授…...
ChatGPT资源宝库:从提示工程到项目实践的完整指南
1. 项目概述:一份关于ChatGPT的“Awesome”清单意味着什么?如果你最近在GitHub上搜索过任何与ChatGPT、AI或提示工程相关的内容,那么你大概率见过一个以“awesome-”开头的仓库。而sindresorhus/awesome-chatgpt无疑是这个领域里最知名、最常…...
从SD卡初始化到读写文件:一个完整嵌入式项目中的SDIO驱动避坑实践
从SD卡初始化到读写文件:嵌入式SDIO驱动实战全解析 在嵌入式系统开发中,SD卡因其高容量、低成本和便携性成为数据存储的首选方案。然而,看似简单的SD卡接口背后隐藏着复杂的初始化协议和时序要求。许多工程师在项目初期都会遇到SD卡无法识别、…...
如何3步免费解锁WeMod专业版:2026年终极增强工具使用指南
如何3步免费解锁WeMod专业版:2026年终极增强工具使用指南 【免费下载链接】Wand-Enhancer Advanced UX and interoperability extension for Wand (WeMod) app 项目地址: https://gitcode.com/gh_mirrors/we/Wand-Enhancer 还在为WeMod专业版的订阅费用而犹豫…...
技术视角:Sketchfab数据提取工具深度解析3D模型下载机制
技术视角:Sketchfab数据提取工具深度解析3D模型下载机制 【免费下载链接】sketchfab sketchfab download userscipt for Tampermonkey by firefox only 项目地址: https://gitcode.com/gh_mirrors/sk/sketchfab 在WebGL技术日益成熟的今天,Sketch…...
Nestia:基于TypeScript编译时分析的NestJS端到端类型安全实践
1. 项目概述:当NestJS遇上TypeScript的极致类型安全如果你正在用NestJS开发后端API,并且对TypeScript的类型安全有近乎偏执的追求,那么你很可能已经听说过,或者正在寻找一个能让你“写一次,安全两次”的工具。我说的“…...
PCL2启动器离线登录按钮消失?5分钟快速修复指南
PCL2启动器离线登录按钮消失?5分钟快速修复指南 【免费下载链接】PCL Minecraft 启动器 Plain Craft Launcher(PCL)。 项目地址: https://gitcode.com/gh_mirrors/pc/PCL 你是否遇到过PCL2启动器离线登录按钮突然消失的困扰࿱…...
【2026最新】鸿蒙NEXT ArkUI实战:培训班管理系统UI界面开发全攻略
鸿蒙UI开发总是踩坑?ArkUI组件用法记不住?本文用15分钟带你彻底搞懂ArkUI核心组件、布局系统、自定义组件和交互动画,附完整培训班管理系统实战代码和踩坑记录,让你的鸿蒙App界面从此丝滑流畅!一、培训班管理界面设计1…...
Python自动化股票分析工具:从数据采集到可视化报告全流程实战
1. 项目概述:一个面向个人投资者的自动化股票分析工具如果你和我一样,是个对A股市场有点兴趣,但又没时间天天盯盘的上班族,那你肯定也经历过这种纠结:早上开盘前想看看心仪的几只股票有没有什么异动,结果一…...
C# AI开发实战:BotSharp框架构建企业级NLP应用指南
1. 项目概述:当C#开发者遇上AI应用开发如果你是一名长期深耕.NET生态的开发者,最近看着Python在AI领域风生水起,心里是不是有点痒,又有点不甘?总觉得为了跑个模型、搭个智能对话,就得切到另一个完全不同的技…...
