• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

一条Sql的执行过程

武飞扬头像
虚幻私塾
帮助1

🚀 优质资源分享 🚀

学习路线指引(点击解锁) 知识定位 人群定位
🧡 Python实战微信订餐小程序 🧡 进阶级 本课程是python flask 微信小程序的完美结合,从项目搭建到腾讯云部署上线,打造一个全栈订餐系统。
💛Python量化交易实战💛 入门级 手把手带你打造一个易扩展、更安全、效率更高的量化交易系统

一条sql内部是如何执行的:

学习MySQL实战45专栏

sql中的内部执行图:

学新通

可以分为两部分:server和存储引擎

server层包含:

连接器、分析器、优化器、执行器,涵盖了MySQL大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),相关功能:存储过程、触发器、视图都在这一层实现。

存储引擎层:

负责数据的存储和提取,存储引擎是可以多选的,支持 InnoDB MyISAM、
Memory 等,现在最常用的存储引擎是 InnoDB,它从 MySQL 5.5.5 版本开始成为了默认存储引擎

指定存储引擎:engine=memory不同存储引擎的表数据存取方式不同,支持的功能也不同.

select * from T where ID=10;

连接器:

学新通

查询缓存:

连接建立后,就可以执行select语句,然后会进行查询缓存,MySQL收到查询请求后,会到查询缓存中查看,其中都是保存着以key-value形式的键值对,key为查询语句,value为查询结果,如果有缓存则直接返回value。不在查询缓存中,会执行后续过程,执行完成后会讲查询的结果保存到缓存中;但是查询缓存的弊大于利;

查询缓存的失效非常频繁,只要有对一个表的更新,这个表上所有的查询缓存都会被清空

按需设置:

  1. 将参数 query_cache_type 设置成 DEMAND;所有的SQL都不会进行查询缓存
  2. 通过关键字SQL_CACHE 也可以显示指定
mysql> select SQL_CACHE * from T where ID=10;

在MySQL8.0后取消了这个查询缓存的功能;

分析器:

然后对于sql语句进行分析,主要词法分析和语法分析

  1. 把相关的关键字、表名、字段等分析出来
  2. 根据词法分析的结果进行语法规则的判断,不会就会有错误提示You have an error in your SQL syntax,然后看use near后面的信息;

优化器:

通过分析器,MySQL知道了执行目的;主要是决定sql中执行的顺序,

优化器是在表里面有多个索引的时候,决定使用哪个索引;或者在一个语句有多表关联(join)的时候,决定各个表的连接顺序

select * from t1 join t2 using(ID)  where t1.c=10 and t2.d=20;
--等价于
select * from ti join t2 where t1.ID = t2.ID and ti.c = 10 and t2.d = 20;

不同的执行顺序,所执行的效率是不一样的;

  • 既可以先从表 t1 里面取出 c=10 的记录的 ID 值,再根据 ID 值关联到表 t2,再判断 t2 里面 d 的值是否等于 20。
  • 也可以先从表 t2 里面取出 d=20 的记录的 ID 值,再根据 ID 值关联到 t1,再判断 t1 里面 c 的值是否等于 10。

执行器:

MySQL 通过分析器知道了你要做什么,通过优化器知道了该怎么做,于是就进入了执行器阶段,开始执行语句;

在工程实现上,如果命中查询缓存(mysql8已取消),会在查询缓存返回结果的时候,做权限验证。查询也会在优化器之前调用 precheck 验证权限

学新通

  • 关于博主: 评论和私信会在第一时间回复。或者直接私信我。
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
  • 声援博主: 如果您觉得文章对您有帮助,可以点击文章右下角**【[推荐](javascript:void(0)😉】**一下。

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfigfck
系列文章
更多 icon
同类精品
更多 icon
继续加载