3分钟带你玩转MySQL体系结构和查询原理!
前言
数据库在我们工作中是常用的工具,公司的重要业务信息大部分都会存储在数据库中。
因此,对于开发人员或运维人员来说,掌握数据库基本原理是必要的技能。无论你使用的是何种数据库,了解数据库的体系架构是非常必要的。“知此知彼,方能百战百胜”。
下面小编就带你来了解MySQL的体系架构。

首先我们得明确MySQL的体系架构主要是数据库和数据库实例组成的,在了解MySQL的实质之前,先来了解以下的概念。
- MySQL是一种单进程多线程的数据库,而数据库实例则是以一个进程的方式在系统中体现出来的。
- MySQL的文件格式有 ibd、MYI、MYD、frm 等结尾的格式文件。
一、MySQL架构示意图

从上图中我们可以发现,整个MySQL框架由两部分组成,
1、 上层是MySQLD,又被叫做“SQL的图层”,里面包含有 查询解析、分析、优化、缓存以及系统自定义的函数(比如,时间、三角函数、加密函数等),主要能实现的功能有:视图、触发器、存储过程等。
2、 下层是为上层提供接口的各式各样的存储引擎,又被称之为“存储引擎图层”。存储引擎包含有很多底层存储引擎诸如 InnoDB、MyISAM、Memory…….,它们被用于像“根据主键查询一行记录”等等方法。但存储引擎不会去解析SQL,各个存储引擎直接不会发生互相通信,他们就仅仅的响应上层服务器端的请求。
二、查询工作原理示意图

1、 客户端首先向服务器发送一条查询语句。
2、 服务器接收到查询语句之后,做两件事情:
- 一是,检查查询语句是否完全匹配。
- 二是,然后再检查该条语句是否具有权限。
3、 当这两个条件都满足的时候,即开始索引缓存,缓存中存在的话则直接返回结果,如果不存在的话,则进入下一个环节,即步骤4。
4、 先进行预处理阶段,解析SQL语句,生成新的解析树,接着再交给对应的模块处理,根据优化器优化,然后生成对应的执行计划。
5、 优化器的执行计划就是,调用存储引擎中的API执行计划表,当有数据变化的时候,打开日志功能,就会记录在相应的二进制日志文件中。
6、 设置缓存,请求完成之后,将结果返回给连接进/线程模块,然后到客户端,并决定是等待请求还是与客户端连接断开。
结论
以上就是MySQL的软件体系架构和查询工作原理,对于开发人员以及运维人员的我们很重要。了解了他们,就能为你的数据库开发道路前进中,扫除很多障碍。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)