3分钟带你玩转MySQL体系结构和查询原理!

前言

数据库在我们工作中是常用的工具,公司的重要业务信息大部分都会存储在数据库中。

因此,对于开发人员或运维人员来说,掌握数据库基本原理是必要的技能。无论你使用的是何种数据库,了解数据库的体系架构是非常必要的。“知此知彼,方能百战百胜”。

下面小编就带你来了解MySQL的体系架构

首先我们得明确MySQL的体系架构主要是数据库数据库实例组成的,在了解MySQL的实质之前,先来了解以下的概念。

  1. MySQL是一种单进程多线程的数据库,而数据库实例则是以一个进程的方式在系统中体现出来的。
  2. 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的软件体系架构和查询工作原理,对于开发人员以及运维人员的我们很重要。了解了他们,就能为你的数据库开发道路前进中,扫除很多障碍。

posted @   麒麟改bug  阅读(549)  评论(0编辑  收藏  举报
编辑推荐:
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示