数据库系统 ##查询优化技术

数据库系统

查询优化技术

基本概念

语义优化:利用模型的语义及完整性规则,优化查询(相同意义的不同sql表达)
语法优化:利用语法结构,优化操作的执行顺序(逻辑层优化)
执行优化:存取路径和执行算法的选择和执行次序优化(物理层优化)

总体思路

语义优化:内容等价性
    如去掉无关表,去掉无关属性
语法优化:语法等价性
    改变次序,尽可能早做选择,投影运算同时保证等价性
执行优化:物理等价性
    选择不同的算法实现,保证结果等价
关系代数操作次序优化->代价估算->算法选择与装配次序

逻辑层优化基本策略

语法树:关系代数表达式的执行次序表达
尽可能早做选择和投影
有选择投影一元操作串起来
把投影和前或后的二元运算结合
把选择和乘积合并成连接
...
一棵未优化的语法树->优化后的语法树

等价性变换定理

  1. 连接与连接,积与积的交换律:小数据集全部载入内存
  2. 连接与连接,积和积的结合律:小数据集全部载入内存
  3. 投影串接律:两遍扫描变一遍
  4. 选择串接律:两遍扫描变一遍
  5. 选择和投影的交换律:方便尽可能早做投影选择
  6. 选择和积的交换律:减少乘积操作,优化关键
  7. 投影和积的交换律:减少每条记录的长度,提高效率
  8. 选择和并的交换律:减少中间结果
  9. 选择和差的交换律:减少中间结果
  10. 投影和并的交换律:减少中间结果

基于关系代数的查询优化算法

输入:关系代数语法树
输出:计算该表达式的程序
算法:
(S1)依据定理L4,把选择拆开
(S2)对每个选择,依据定理L4至L9,尽可能把它移至树的底部。
(S3)对每个投影,依据定理L3,L7,L10和L5,尽可能把它移至树的底部。如
果一个投影是对某表达式所有属性进行的,则去掉之。
(S4)依据定理L4至L5把串接的选择和投影组合为单个选择、单个投影,或者
一选择后跟一个投影。
(S5)对修改后的语法树,将其内结点按以下方式分组:
每个二元运算结点(积、并、差、连接等)和其所有一元运算直接祖先结点放在
一组;对于其后代结点,若后代结点是一串一元运算且以树叶为终点,则将这
些一元运算结点放在该组中;若该二元运算结点是笛卡儿积,且其后代结点不
能和它组合成等连接,则不能将后代结点归入该组。
(S6)产生一个程序:它以每组结点为一步,但后代组先执行

物理层查询优化

相同目标的不同算法实现:一趟、两趟、索引、散列、排序等
衡量指标:IO次数,cpu代价、内存代价等
数据库的统计信息:存放在数据字典中或系统目录中,方便DBMS选择合适物理执行
更新统计信息:需要DBA手动更新,相应的命令

代价估算

统计信息:
   T R 或T(R):关系R的元组数目;
 B R 或B(R) :关系R的磁盘块数目;
 I R 或I(R) :关系R的每个元组的字节数;
 f R 或f(R) : R的块因子 , 即一块能够存储的R的元组数目
 V(R, A): R中属性A出现不同值的数目,即A (R) 的数目.
 SC(R, A): R中属性A的选择基数,满足A上等值条件的平均记录数
估计投影:
    T:不变,行数不变
    B:变小,每条记录变短,节省了磁盘块
选择运算:
    相等:T(R)/V(R,A),不知道V时取10
    小于:T(R)/3
    串接条件:分母相乘
    或者:估计都不满足的概率
连接:
     TR*TS*1/max(V(R,Y),V(S,Y))
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值