mysql架构

在这里插入图片描述

1、连接器

连接器负责跟客户端建立连接,获取权限、维持和管理连接

  • – 用户名密码验证
  • – 查询权限信息,分配对应的权限
  • – 可以使用show processlist查看现在的连接
--查询连接数量
mysql> show processlist;
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
| Id | User            | Host            | db   | Command | Time   | State                  | Info             |
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
|  5 | event_scheduler | localhost       | NULL | Daemon  | 407387 | Waiting on empty queue | NULL             |
| 18 | root            | localhost:13165 | db01 | Sleep   |  58004 |                        | NULL             |
| 19 | root            | localhost:13204 | db01 | Sleep   |  58004 |                        | NULL             |
| 28 | root            | localhost:12078 | NULL | Query   |      0 | starting               | show processlist |
+----+-----------------+-----------------+------+---------+--------+------------------------+------------------+
4 rows in set (0.04 sec)

mysql>
  • – 如果太长时间没有动静,就会自动断开,通过wait_timeout控制,默认8小时

连接可以分为两类:

  • – 长连接:推荐使用,但是要周期性的断开长连接
  • – 短链接:

2、查询缓存

当执行查询语句的时候,会先去查询缓存中查看结果,之前执行 过的sql语句及其结果可能以key-value的形式存储在缓存中,如 果能找到则直接返回,如果找不到,就继续执行后续的阶段。

▪ 但是,不推荐使用查询缓存:

  • – 1、查询缓存的失效比较频繁,只要表更新,缓存就会清空
  • – 2、缓存对应新更新的数据命中率比较低

3、分析器

词法分析:Mysql需要把输入的字符串进行识别每个部分代表什 么意思

  • – 把字符串 T 识别成 表名 T
  • – 把字符串 ID 识别成 列ID

▪ 语法分析:

  • 根据语法规则判断这个sql语句是否满足mysql的语法,如果不符 合就会报错“You have an error in your
    SQL synta”

4、优化器

在具体执行SQL语句之前,要先经过优化器的处理

  • – 当表中有多个索引的时候,决定用哪个索引
  • – 当sql语句需要做多表关联的时候,决定表的连接顺序

不同的执行方式对SQL语句的执行效率影响很大

  • – RBO:基于规则的优化
  • – CBO:基于成本的优化

5、执行器

开始正式执行SQL语句之前,要先进行用户权限验证(如果是在查询缓存中直接返回,则是在返回结果时做权限验证)。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值