加入收藏 | 设为首页 | 会员中心 | 我要投稿 鹰潭站长网 (https://www.0701zz.cn/)- 图像处理、低代码、云通信、数据工具、物联设备!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

资产追踪设备出货量增加

发布时间:2021-02-15 12:42:29 所属栏目:外闻 来源:互联网
导读:如上图, 我们看到是从查询处理器里经过解析器,优化器,才进入的执行引擎。 今天我们先来看查询管理器,后面再重点来看查询的优化器是怎样精打细算的。 查询管理器 这一部分是数据库功能体现。在这部分里,会将写得不好的查询转换成可以快速执行代码, 然后

如上图, 我们看到是从查询处理器里经过解析器,优化器,才进入的执行引擎。

今天我们先来看查询管理器,后面再重点来看查询的优化器是怎样精打细算的。

查询管理器

这一部分是数据库功能体现。在这部分里,会将写得不好的查询转换成可以快速执行代码, 然后执行它,并将结果返回给客户端。这个过程会包含多个步骤:

  • 首先解析查询是否是合法的
  • 然后会将查询重写,去除没用的操作符,并做一些预优化
  • 对查询优化以提升性能,将查询转换成执行和数据访问计划
  • 编译查询计划
  • 执行

这部分里,对最后两点我们不会说太多,相对来说他俩没那么关键。

查询解析器

每个SQL语句都会经过分析器去校验语法是否正确。如果你写错了,解析器会拒绝查询。比如你手误,把SELECT 写成了 SLECT,那直接会停止在这儿。

此外,还会检查关键词顺序是否正确。

然后,查询SQL中的表名和列名也会分析,解析器会通过数据库的 metadata 来检查以下内容:

  • 表是否存在
  • 表中对应的查询字段是否存在
  • 对应的操作符是不是能作用在指定的列上(比如不能把一个数字和字符串比大小,也不能给一个integer用substring)

之后会检查查询中对应的表你是否有权限去读或写,毕竟这些访问权限是DBA分配的。

在解析的过程中, 查询SQL 会被转换成数据库的内部表示形式(一般是一棵树)。如果一切 OK,这个转换后的内容会发送给查询「重写器」

查询 Rewriter

在这一步,我们拿到了一个查询的内部表示形式,重写器的目标是要:

  • 对查询做预优化
  • 避免无用的操作
  • 帮助优化器发现最佳方案

重写器会对查询执行一系列已知的规则。如果查询符合某个规则的模式,就会应用这个规则来重写查询。以下是(可选)的规则:

视图合并:如果在查询中使用了视图,那视图将会随着该视图的SQL代码进行转换。

子查询打平:有子查询的查询很难优化,因此重写器将尝试修改查询,甚至删除子查询。

例如


 

(编辑:鹰潭站长网)

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

    热点阅读