美文网首页
CMU 15445 11. Query 优化

CMU 15445 11. Query 优化

作者: 西部小笼包 | 来源:发表于2019-06-25 19:27 被阅读0次

SQL是声明性的。 这意味着用户告诉DBMS他们想要什么答案,而不是如何得到答案。 因此,DBMS需要将SQL语句转换为可执行的查询计划。 但是有不同的方法来执行查询(例如,连接算法),这些计划的性能会有所不同。 因此,DBMS需要一种方法来为给定查询选择“最佳”计划。 这是DBMS优化器的工作。

有2种优化的策略:

  1. 基于规则的: 通过重写QUERY来消除不高效,不需要一个成本模型。
  2. 基于成本的: 使用成本模型来评估多种等价计划然后选择成本最小的。
image.png

基于规则的优化

主要有2种手段。where下沉。表达式简化。

where 下沉

image.png

上述方法可以让filter提前过滤掉很多数据,使得只有少部分数据需要传输和join,从而来提高效率。

表达式简化

移除不必要的条件。


image.png
image.png

合并条件。


image.png

基于成本分析的优化

DBMS的优化器将使用内部成本模型来估计特定查询计划的执行成本。 这提供了一种估计,以确定一个计划是否优于另一个计划而不必实际运行查询(这对于数千个计划来说会很慢)。
此估计值是一个内部指标与实际指标不具有可比性,但可以通过估算不同资源的使用情况得出:
磁盘,内存,cpu,网络

为此,DBMS在其内部目录中存储有关表,属性和索引的内部统计信息。 不同的系统会在不同时间更新统计信息。 与开源系统相比,商业DBMS具有更强大和准确的统计数据。 这些是估算值,因此成本估算通常是不准确的

Derivable 统计

image.png

存储统计

维护一个直方图,来预估一个谓词会涉及到多少
如果不均匀的话,就以桶的形式使得每个高度尽可能接近。


image.png image.png

当然也可以使用抽样法。


image.png

搜索最少COST的算法

image.png

枚举顺序,枚举计划针对每个算子,枚举获取方式对每个表。使用动态规划减少成本估计的数量。

相关文章

  • CMU 15445 11. Query 优化

    SQL是声明性的。 这意味着用户告诉DBMS他们想要什么答案,而不是如何得到答案。 因此,DBMS需要将SQL语句...

  • CMU 15445 8. Query plan

    DBMS将SQL语句转换为查询计划。 Operator被安排在Tree上。 数据从叶子流向根。 树中根节点的输出是...

  • CMU 15445 6.B+树 + homework2

    https://15445.courses.cs.cmu.edu/fall2018/slides/07-trees...

  • CMU 15445 7.skip list + radix tr

    https://15445.courses.cs.cmu.edu/fall2018/notes/08-trees2...

  • CMU 15445 10. 连接

    为什么我们需要连接? 我们规范化关系数据库中的表,以避免不必要的信息重复。我们使用join操作来重建原始元组而不会...

  • CMU 15445 Project 4 实现Logging An

    LAB 第一个TASK的实现目标,就是去记录LOG。但是不是每次写LOG都会直接去落盘,也是会先CACHE在一个B...

  • CMU 15445 15. TO + OCC + MVCC

    时间戳排序(T / O)是一种乐观的并发控制协议类,其中DBMS假定事务冲突很少。 DBMS不是要求事务在允许读取...

  • CMU 15445 12. 并发模型

    背景 所有并行执行查询的DBMS都提供了以下几个好处: 提高吞吐量和延迟性能。 提高可用性。 可能降低总体拥有成本...

  • CMU 15445 13.并发控制理论

    ACID 子性:一个事务的所有的操作要么全发生,要么全不发生一致性:如果在事务的开始,数据库的状态是一致的,那么可...

  • CMU 15445 Project 3 实现Lock Manag

    此LAB 按照2017的要求 做到后面发现因为缺少极多信息,比如API的框架,一些CONFIG的参数。我无法完成2...

网友评论

      本文标题:CMU 15445 11. Query 优化

      本文链接:https://www.haomeiwen.com/subject/hjqaqctx.html