一、关系数据库系统的查询处理:
查询分析:对查询语句进行扫描,词法分析、语法分析、语义分析、符号名转换
查询检查:根据数据字典对合法的查询语句进行语义检查;
根据数据字典中用户权限和完整性约束定义对用户存取权限进行检查
检查通过后,把SQL查询语句转换为等价的关系代数表达式
这个过程把外部表示转为内部表示
查询优化:选择一个高效执行的查询处理策略
依据:基于规则、基于代价、基于语义
代数优化:关系代数表达式的优化
物理优化:存取路径和底层操作算法的选择
查询执行:依据优化器得到的执行策略生成查询计划
代码生成器生成执行查询计划的代码
选择操作的实现:
1.简单的全表扫描方法;2.索引(散列)扫描方法
连接操作的实现:
1.嵌套循环方法:对外层的每个元组,检索内层循环中的每个元组
2.排序合并方法:将表按连接属性进行排序,然后依次扫描两个表进行连接
3.索引连接方法:在其中一个表的连接属性上建立索引,然后对另一个表的每个元组通过索引进行连接
二、关系数据库系统的查询优化:
RDBMS通过某种代价模型计算出各种查询执行策略的执行代价,然后选择代价最小的执行方案
集中式数据库:
执行开销包括:磁盘存取块数(IO)、处理机时间(CPU)、查询的内存开销。IO代价最主要
分布式数据库:
总代价 = IO代价+CPU代价+内存代价+通信代价
查询优化总目标:
选择有效的策略;求得给定关系表达式的值;使得查询代价最小(较小)
三、代数优化:
代数优化策略:通过对关系代数表达式的等价变化来提高查询效率
关系代数表达式的等价:用相同的关系代替两个表达式中相应关系所得结果是相同的
常用等价变换规则:
连接、笛卡尔积交换律;连接、笛卡尔积结合律;投影的串接定律;选择的串接定律;
选择投影交换律;选择对并(差、连接)的交换律;投影对笛卡尔积的分配律
查询树的启发式优化:
1.选择算法尽可能先做;
2.把投影和选择运算同时进行;
3.把投影同其前后的双目运算结合起来;
4.把某些选择同它前面的笛卡尔积结合为一个连接运算
5.找到公共子表达式
四、物理优化:
选择高效合理的操作算法或存取路径,求得优化的查询计划
选择的方法:
基于规则的启发式优化;基于代价估算的优化;两者结合的优化