Query Processing


层次网状关系模型
基于层次网状关系模型的是非关系数据库
基于关系模型是关系型数据库
对于非关系型数据库没有sql标准
操作非关系型数据库跟你过程编程差不多
所以在非关系型数据下你的性能只跟你的程序有关
那关系型数据库后台是怎么处理你的sql的呢?

查询过程

什么是查询过程:dbms用什么样的方式处理你的sql语句的呢,如何解析和执行你的sql并返回你想要的结果的呢?

如何更好的优化呢?

查询优化

什么是查询优化:你提交的那么高级的语句,后台怎么选择一个更好的更快的方式执行呢?就算结果都一样?

查询执行过程

  1. 分解

    1. 分析

         语法:对不对  
         词法问题:有没有这个东西   
         数据类型问题:这个东西的类型是不是匹配、是不是能够比较             
      
    2. 转换

         把你的高级语言转换为我能认的东西    
         把你提交的东西转化为我底层能理解的8种运算  
         (把你的sql转换成一个语法树) 
      
  1. 优化

          优化的方式:--启发式规则(选择先做:让语法树中的选择下沉)
                    --基于代价的评估   
    
  1. 执行

关于关系代数的转换规则


  1. 选择的合取律
  2. 选择的交换律
  3. 投影的啥啥律
  4. 选择和投影是可交换的
  5. 连接具有交换律,笛卡尔积具有交换律
  6. 选择和连接是可交换的

dbms将这几个律写在后侧,其目的是让选择先做,但是前提是能先做,也就是符合这些规律

期末考试不考具体的转换(考研会考)

启发式规则

  1. 选择尽可能先做
  2. 用 连接 代替 笛卡尔积加选择
  3. 选择尽可能在叶节点上
  4. 投影尽可能先做
  5. 通用的表达尽可能少做,合并成一次做

基于代价的评估


会考关于查询优化概念,关于事务的概念,不会评判可串行性,也不会考你语法树

results matching ""

    No results matching ""