01-mysql结构与执行流程

Mysql大体结构

客户端

PHP、Navicat等

服务端

         连接层:主要是线程管理、对程序连接的管理

        sql层:解析sql,优化sql语句

        存储引擎层:innodb存储引擎、myisam存储引擎

mysql的连接层

1、连接之后的用户名和密码校验

2、对于校验之后的连接进行线程分配管理

3、对于用户校验-》host校验

4、返回连接的id

-1 抛出异常

最多连接数:show variables like "%max_connections%";

查看当前用户的连接:show processlist;

对于连接长短之分:

短连接:开始连接-校验-数据查询-返回结果-关闭连接(sleep)

长连接:开始连接-校验-数据查询-返回结果。。。。关闭结果【默认8小时】

100 100=》mysql会有延迟,但是不会阻塞

select user,host,plugin from mysql.`user`

SQL层

sql的sql语句接口:接收到由连接层传递的SQL语句

select * from user where >10 and (age > 21 or sex = 0);

1.先判断下sql语句的类型

(query(select),dml(insert,update,delete),ddl(alter),status(show status) 等 )

2.假设是query

8.0之前先走缓存

8.0之后:解析器:sql解析器->语法解析器

sql解析器:

根据查询的sql语句将sql划分为小token

select,*,from,user,where,id,>,10,and,(,age,>,21,or,sex,=,0,)

得到前面分解的token,根据token去进行排列组合(关键字and or)成解析树

是根据where条件中的关键词来进行组合

优化器:

根据解析树=》选择合适的执行计划(这个计划不一定是最优的)

1.获取表结构信息(字段信息,字段的类型,存储的位置,索引信息) 获取的信息是查询表的信息,如果是join那就是两张表的信息

2.根据解析树进行条件过滤=>主要是一下没有意思的查询 1=1

3.索引信息 来确定/判断执行计划

4.执行计划  在索引已经条件等过滤

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值