05-mysql结构与SQL执行

  1. mysql大体结构
  2. mysql的连接层
  3. sql层之解析器
  4. 优化器的执行
  5. SQL的执行流程

mysql大体结构

mysql连接层

连接层:查询最大连接:

SHOW VARIABLES LIKE '%max_conn%';

假如最大连接是200个,那1000 千个访问可能一些连接会存在短暂的延迟并不会出现特严重的阻塞问题
1.连接之后会判断用户密码的校验
2.对于校验之后的连接会进行 - 分配一个线程管理这个链接()
mysql=>连接线程=>长和短

用户连接默认是短连接=>执行完一次sql就 会进入Sleep

SHOW PROCESSLIST;                                        # 查看当前用户连接

3.查询用户的数据库的权限=>对于表操作执行权限(系统权限)
4.返回连接的id

sql层之解析器

SQL层: SELECT * FROM count WHERE prefix = "dd1”and count < 2 and count〉0
sq1层的SQL语句接口 => 接收到由连接层所传递的SQL语句,会进行:

1.先判断SQL语句 类型(query,dml [update, delete, insert],ddl[atler], rep, status)
2.如果是query类型=>判断是否开启”查询缓存”=>相当于redis做-一个缓存
     2.1开启了=>去查询缓存中命中并返回数据
3.解析器->对于SQL进行分解=>令牌分解方式=>会把sql的每一个符号都会分解成令牌

SELECT * FROM count WHERE prefix = " dd1"

SELECT * FROM count WHERE prefix = " dd1" and   count<2  and  count > 0

优化器

根据解析树=>选择合适的执行计划
4.1获取表的结构(字段信息,字段类型信息,存储位置,数据信息,索引信息)获取的是查询的表的信息
     如果是join那就是两个表
4.2根据解析树进行条件过滤=>会过滤些没意义的查询
4.3判断执行计划(xxxx)
4.4如何执行性能是最优执行方案
这个方案不一定正确--之后在索引内容中解释

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值