加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 服务器 > 安全 > 正文

首席DBA用SQL洪荒之力,造一把通向数据库的钥匙

发布时间:2021-01-09 18:12:32 所属栏目:安全 来源:网络整理
导读:副标题#e# 《首席DBA用SQL洪荒之力,造一把通向数据库的钥匙》要点: 本文介绍了首席DBA用SQL洪荒之力,造一把通向数据库的钥匙,希望对您有用。如果有疑问,可以联系我们。 本文根据DBAplus社群第70期线上分享整理而成 讲师介绍 韩锋宜信技术研发中心数据

  1. 用户提交了一条SQL语句
  2. 数据库按照SQL语句的字面值计算出一个HASH值
  3. 根据HASH值,判断一下在数据库缓冲区中是否存在此SQL的执行计划.
  4. 如果不存在,则需要生成一个执行计划(硬解析过程),然后将结果存入缓冲区.
  5. 如果存在的话,判断是否为相同SQL(同样HASH值的语句,可能字符不相同;即使完全相同,也可能代表不同的语句.这块不展开说了)
  6. 确认是同一条SQL语句,则从缓冲区中取出执行计划.
  7. 将执行计划,交给执行器执行.
  8. 结果返回给客户端.

  1. 客户提交一条语句
  2. 现在查询缓存查看是否存在对应的缓存数据,如有则直接返回(一般有的可能性极小,因此一般建议关闭查询缓存).
  3. 交给解析器处理,解析器会将提交的语句生成一个解析树.
  4. 预处理器会处理解析树,形成新的解析树.这一阶段存在一些SQL改写的过程.
  5. 改写后的解析树提交给查询优化器.查询优化器生成执行计划.
  6. 执行计划交由执行引擎调用存储引擎接口,完成执行过程.这里要注意,MySQL的Server层和Engine层是分离的.
  7. 最终的结果有执行引擎返回给客户端,如果开启查询缓存的话,则会缓存.

七、SQL优化器

在上面的执行过程描述中,多次提高了优化器.它也是数据库中最核心的组件.下面我们来介绍一下优化器.

上面是我对优化器的一些认识.优化器是数据库的精华所在,值得DBA去认真研究.但是遗憾的是,数据库对这方面的开放程度并不够.(相对来说,Oracle还是做的不错的)

这里我们看到的MySQL的优化器的工作过程,大致经历了如下处理:

  1. 词法分析、语法分析、语义检查
  2. 预处理阶段(查询改写等)
  3. 查询优化阶段(可详细划分为逻辑优化、物理优化两部分)
  4. 查询优化器优化依据,来自于代价估算器估算结果(它会调用统计信息作为计算依据)
  5. 交由执行器执行

此图是DBAplus社群MySQL原创专家李海翔对比不同数据库优化器技术所总结的.从这里可以看出:

  1. 不同数据库的实现层次不同,有些支持、有些不支持
  2. 即使支持,其实现原理也差异很大
  3. 这只是列出了一小部分优化技术
  4. 以上对比,也可以解释不同数据库对同样语句的行为不同.下面会有一个示例说明

八、SQL 执行计划

看懂执行计划是DBA优化的前提之一,它为我们开启一扇通往数据库内部的窗口.但是很遗憾,从没有一本书叫做“如何看懂执行计划”,这里的情况非常复杂,很多是需要DBA常年积累而成.

(编辑:应用网_丽江站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读