数据库系统概念笔记——第十三章:查询优化

Posted 叶卡捷琳堡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库系统概念笔记——第十三章:查询优化相关的知识,希望对你有一定的参考价值。

第十三章:查询优化

13.1 概述

查询优化就是在许多策略中找出最有效的查询执行计划的一种处理方式

考虑下面的查询
在这里插入图片描述
转换后得到
在这里插入图片描述
初始表达式和变换后的表达式如下
在这里插入图片描述
一个执行计划确切地定义了每个运算应使用的算法,以及运算之间的执行应该如何协调。
在这里插入图片描述
给定一个关系代数表达式,查询优化器的任务是产生一个查询执行计划,该计划能获得与原关系表达式相同的结果,并且得到结果集的执行代价最小

基于代价的优化的步骤

  1. 产生逻辑上与给定表达式等价的表达式
  2. 对所产生的表达式以不同的方式作注释,产生不同的查询计划
  3. 估计每个执行计划的代价,选择估计代价最小的一个

13.2 关系表达式的转换

如果两个关系代数表达式在所有有效数据库实例中都会产生相同的元组集,则称它们是等价的

13.2.1 等价规则

总共有12条规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

13.2.2 转换的例子

在这里插入图片描述
尽早地执行选择以减少被连接的关系的大小

2009年教授一门课程的老师
在这里插入图片描述
利用自然连接的结合律,将其转换为
在这里插入图片描述
根据规则7.a,转换为
在这里插入图片描述
将选择条件拆成两个后
在这里插入图片描述
转换前与转换后的表达式树
在这里插入图片描述

13.2.3 连接的次序

在这里插入图片描述

13.3 表达式结果集统计大小的估计

13.3.1 目录信息

数据库系统目录中存储了有关数据库关系的下列统计信息

  • nr:关系r的元组数
  • br:包含关系r中元组的字节数
  • lr:关系r中每个元组的字节数
  • fr:关系r的块因子——一个磁盘块能容纳关系r中元组的个数
  • V(A,r),关系r中属性A中出现的非重复值个数。如果A是关系r的主码,则V(A,r)等于nr
    在这里插入图片描述

关于索引的统计信息,比如B+树索引的高度和索引中叶节点的页数,也保存在目录中

每次修改数据库中的数据时,必须同步更新统计信息

直方图

大部分数据库将每个属性的取值分布另存为一张直方图信息,如果没有直方图信息,优化器将假设分布是均匀的

关系person上属性age的直方图

在这里插入图片描述
一张直方图只占很小的空间,因此不同属性上的直方图可以存储在系统目录里

13.3.2 选择运算结果大小的估计

1.σA= v ( r )
nr / V(A,r) : 满足选择的记录数

2.σ A<=V(r)
1、c 表示满足条件的元组的估计数
2、如果 min(A,r) 和 max(A,r) 可存储到目录上,当v 小于记录的最小
值时,c 为0;当v 大于记录的最大值时,c 为nr。否则c 为下式:
在这里插入图片描述
选中率

在这里插入图片描述

13.3.3 连接运算结果集大小的估计

假设笛卡尔积 r * s包含 nr * ns个元组
在这里插入图片描述
5、若R∩S既不是R的码也不是S的码,假定每个值等概率出现。我们假设 r 中的所有元组r ⋈ s中产生的元组个数估计为下式:
在这里插入图片描述
注:上述估计是在各个值等概率出现的这一假设前提下做出的,如果这个假设不成立,则必须使用更发杂的估算方法。直方图可以改善上述结果,如果两个直方图有相似的区间,可以在每个区间中使用上述估计方法。

13.4 执行计划选择

这一部分了解即可,看书和ppt

以上是关于数据库系统概念笔记——第十三章:查询优化的主要内容,如果未能解决你的问题,请参考以下文章

品悟性能优化读书笔记-第十三章

第十三章大规模数据库架构

数据库系统概念笔记——第十二章:查询处理

Linux系统:第十三章:centos误删文件如何恢复文件数据

Linux系统:第十三章:centos误删文件如何恢复文件数据

网络操作系统第十十三章习题