01MySql的结构及执行流程

2022-03-10  本文已影响0人  評常訫

mysql的逻辑架构分为三层:

    一、客户端:并非mysql独有。功能:连接处理、授权认证、安全等

    二、核心服务:有查询解析、分析、优化、缓存、内置函数(比如:时间、加密、截取等);所有的跨存储引擎的功能都在这里实现,如:存储过程、触发器、视图等

    三、存储引擎:负责mysql中的数据存储和提取

mysql的体系结构分为两层:

    一、mysql服务层

        1、连接层:客户端或引用程序通过接口(如:ODBC、JDBC)来连接mysql时最先通过连接层

            1)通讯协议:负责检测客户端版本是否与服务端兼容

            2)线程处理:对每一个连接请求都分配一个独立的线程

            3)用户名密码认证:输入的账号、密码及主机(host)是否可以连接到mysql服务器

        2、sql层

            1)权限判断:判断登录用户可以访问到mysql中的那些库和表

            2)查询缓存:查询时如果数据在query cache中直接返回否则查询数据库(mysql8中废弃)

            3)解析器:分为词法解析和语法解析。词法解析(把sql语句打碎成一个一个的单词,判断每个符号是什么类型,从哪儿开始从哪儿结束);语法解析(对sql进行一些语法检查,比如单引号有没有闭合,根据sql语句生成一个数据结构叫做解析树)

            4)预处理器:判断解析器生成的解析树中的表名及字段名是否存在。存在则生成一个新的解析树

            5)优化器:根据解析树生成不同的执行计划,然后选择一条最优的执行

                比如多表联合查询选择拿一张表作为基准,有多个索引时选择使用哪个索引,移除1=1的恒等式等等。优化器最终会把解析树变成一个执行计划,执行计划也是一个数据结构。最后选择的执行计划不一定是最优的执行计划。我们们在语句执行加上explain就可以查询到执行计划的信息。如果想要详细的信息,就用format=json。

比如语句为:explain format=json select name from user where user_id = 1

此处参考文章

    二、存储引擎层(存储引擎可以根据官方文档DIY)

        1、innodb:支持事物,其设计主要应用于在线事务处理中。特点:行锁,支持外键。默认读取时不会产生锁,5.5版本后是默认的存储引擎

        2、myisam:不支持事物,支持全文检索

            

上一篇 下一篇

猜你喜欢

热点阅读