MySQL(一)基础架构:一条SQL查询语句是如何执行的?

基础架构:一条SQL查询语句是如何执行的?

在这里插入图片描述

  1. 连接器:和客户端建立连接、获取权限、维持和管理连接。mysql -h i p − P ip -P ipPport -u$user -p

  2. 查询缓存:执行select,根据查询请求查看是否执行过。如果执行过的会以键值对的形式缓存在内存中key是查询的语句,value是 查询的结果。如果查询缓存中没有,继续执行后面执行阶段,执行完后,执行结果存储在缓存中。系统配置表适合使用查询缓存。
    查询缓存的弊大于利:失效频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空;
    设置查询缓存:默认SQL不使用—将参数query_cache_type设置成 DEMAND;
    确定使用缓存查询: mysql> select SQL_CACHE * from T where ID=10;
    MySQL 8.0版本直接将查询缓存的整块功能删掉。

  3. 分析器:对SQL语句进行解析。先做词法分析,解析字符串分别是什么,代表什么。接着做语法分析,判断SQL语句是否满足MySQL语法,语句不对,就会收到“You have an error in your SQL syntax”的错误提醒。知道你要做什么。

  4. 优化器:决定使用哪个索引,决定各个表的连接顺序。即使逻辑结果是一样的,但是执行的效率会有不同,而优化器的作用就是决定选择使用哪一个方案。知道该怎么做。

  5. 执行器:先判断对表是否有权限,没有返回错误提示。再打开表执行行,使用引擎提供的接口。没有索引的情况下,innodb取第一行判断ID是否相同,不是跳过,是则将这一行存储在结果集中。接着取下一行,执行相同逻辑,直到表的最后一行。执行器将所有满足的行存储到到结果集返回客户端。
    慢查询日志中看到一个rows_examined的字段,表示这个语句执行过程中扫描了多少行。这个值就是在执行器每次调用引擎获取数据行的时候累加的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值