数据库回顾(八) 数据库执行机制概述

103 阅读4分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第15天,点击查看活动详情

大家好! 我是慕歌,一只想教你学习 后端技术的野生coder! 欢迎来到慕歌的数据库系列教程,希望通过这个教程带大家深入学习数据库技术,该教程所有知识点均来源于本人的日常学习与开发中,如有疑问请与我联系!

前言

在上一节的分享中,慕歌向大家分享关于数据库权限的知识,数据库为我们提供了完善的用户权限管理,进行细粒度的权限管理。数据库权限主要分为对数据表的控制,数据表数据管理以及用户数据管理,通过控制用户对数据表的操作权限,可以限制用户对表造成影响。数据表的数据管理也进行细的划分,对增删改查进行控制,防止对数据勿操作,在某种层面上是视图的权限加强版本,从底层杜绝误操作。同时可分配角色,将权限集合进行封装到角色中,当用户具有角色的时候,就具有一定的权限集合,做到对用户与权限的解耦,便于进行管理分配。
那么这一节中,将要学习的是数据库底层的知识,一条sql 语句在数据库中是如何执行的,才能达到我们想要的效果这是值得研究的,数据库底层的执行机制,值得我们进行深入的探索。

执行流程图

逻辑.jpg
这是最经典的数据库组成逻辑架构,下面对该图进行拆解分析。

逻辑架构

连接层:

在访问数据库的第一个操作就是建立连接,连接服务就来源于连接层,这里建立的连接是TCP连接。
连接过程:

  1. 建立稳定的TCP连接,进行三次握手校验连接的正确
  2. 接受连接数据,进行账号的验证,传输用户名密码等数据
  3. 对传输过来数据进行检验,账号密码是否正确,并查询账号的权限
  4. 在线程池中分配一个线程用于维护连接,与客户端进行数据的交互
  5. 后续客户端的操作将在线程中完成

服务层:

**SQL接口:**接受用户的SQL语句,并返回用户需要的查询结果,支持DML语句,DDL语句等。
**解析器:**对SQL语句进行语法分析,词义分析,生成语法树,后续通过语法树对SQL进行校验检查。
**查询优化器:**在语句解析完成,执行查询之前对语法树的sql 进行分析,如果具有优化项会生成新的执行计划。
常见的优化项,索引的运用吗,当建立的索引能够使用时优先考虑,如果具有更优的执行计划,选择综合更优的进行执行。主要考虑时间成本与空间成本,进行综合分析,空间成本中IO次数重点考虑。
**缓存组件:**查询的结果除了返回用户外,还会进入缓存中,如有相同的查询进入,直接从缓存中获取,但是缓存命中的概率较低,在MYSQL8.0中对该模块进行取消

引擎层:

引擎中包含真正进行数据交互读写的执行引擎,每种数据引擎的结构与性能是有所差异的,具有不同的作用。如常用的INNODB 引擎则是MYSQL 中常用的执行引擎,具有事务,索引的机制,在某些方面具有更优的性能。

逻辑图:

执行逻辑.png
最后,整个数据库的执行流程简图就是这样的,每个层负责一定的任务,进行顺序执行。其中服务层完成了对SQL 语句的分析,优化。生成一项尽可能最优的执行策略,有效提升执行的效率。引擎层负责最终的执行操作,与底层的文件系统进行交互,不同的引擎具有不同的交互逻辑,且有各自的执行优势,可根据需求进行调整。

结语

这一节的分享到这里就结束了,下一节将带来数据库引擎的分享学习!
如果您觉得本文不错,欢迎点赞支持,您的关注是我坚持的动力!