栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Mysql 45讲学习笔记(一)一条sql语句的执行

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Mysql 45讲学习笔记(一)一条sql语句的执行

一条sql语句的执行
    • 一.Mysql基本架构
      • MySQL可以分为Server层和存储引擎层两部分
    • 二.连接器
        • 数据库的长连接
        • 长连接缺点
        • 长连接内存占用过大的解决方案
    • 三.查询缓存
        • 查询缓存往往弊大于利
    • 四.分析器
    • 五.优化器
    • 六.执行器

一.Mysql基本架构
SELECt
	* 
FROM
	T 
WHERe
	ID = 10;

MySQL可以分为Server层和存储引擎层两部分
  1. server层包括连接器、查询缓存、分析器、执行器、内置函数(日期,时间,数字和加密函数等),所有的跨存储引擎的功能都在这一层实现,比如存储过程,触发器,视图等。
  2. 存储引擎层 负责数据的存储和提取:其架构模式是插件式的,支持InnoDB,MyISAM,Memory等多个存储引擎
  3. 最常用的引擎是InnoDB,从MySQL5.5.5版本开始默认存储引擎。
二.连接器

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

mysql -h$ip -P$port -u$user -p
  • 用户名密码认证通过,连接器会到权限表里查出你拥有的权限
  • 用户成功建立连接后,你用管理员账号对这个用户的权限做修改,也不会影响已存在连接的权限
  • 当修改用户权限后,需要新建连接才会使用新的权限设置
数据库的长连接
  • 长连接是指连接成功后,如果客户端持续有请求,则一直使用同一个连接 (推荐)
  • 短连接是指每次执行完很少的几次查询就断开连接,下次查询重新建立一个
长连接缺点
  • 内存占用过大:Mysql执行过程中临时使用的内存管理在连接对象里面,这些资源会在断开连接以后才释放,所以长连接积累下来,导致内存占用太大,被系统强行(OOM)
长连接内存占用过大的解决方案
  • 定期断开长连接
  • 执行 mysql_reset_connection重新初始化连接资源
三.查询缓存
  • MYSQL拿到一个查询请求后,会先到查询缓存看看,之前是不是执行过这个语句
  • 查询信息会以key-value对的形式,直接缓存在内存中。
  • key是查询语句,value是查询结果
  • 语句不在缓存中,会继续后续执行将结果回写到查询缓存中
查询缓存往往弊大于利
  • 查询缓存失效频繁,任何更新修改删除操作,都会 让查询缓存失效
  • MySQL8.0版本以后就没有查询缓存了
四.分析器
  • 词法分析
  • 语法分析
五.优化器
  • 优化器是在表里面有多个索引的时候,决定使用哪个索引
  • 一个语句有多表关联(join)的时候决定各个表的连接顺序
SELECt
   t1.* 
FROM
   t1
   LEFT JOIN t2 ON t2.d = 20 
WHERe
   t1.c = 10

优化器会判断走不走索引,选择最快的执行方式

六.执行器

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

执行步骤
1.权限验证-对该表是否有查询修改删除权限
2.调用存储引擎执行

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/966661.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号