数据库系统概论——系统篇

本文详细介绍了数据库系统中查询处理的步骤,包括查询分析、查询优化和查询执行,强调了查询优化中的代数优化和物理优化策略。此外,还讨论了数据库恢复技术,如事务的ACID特性、恢复策略及日志文件的作用。最后,文章探讨了并发控制,包括封锁协议、死锁预防和可串行化调度。
摘要由CSDN通过智能技术生成

系统篇来讲的东西是数据库系统内部的东西是什么样的,如何实现的:

SQL语句

Parser解析器(检查关键字、语法和访问权限)

Operator evaluator(操作符评价器)
Executor
Optimizer

得到能够可执行的语句

事务处理(并发控制)
故障恢复
存储

9 关系查询处理和查询优化

查询分析、查询检查、查询优化、查询执行

考点1

查询分析(词法分析、语法分析)
查询检查(语义分析、符号名转换、安全性检查、完整性初步检查)
查询优化(代数优化——语法树前序遍历叶子节点就是查询语句——转换成关系代数的查询树,加入选择投影连接等操作、物理优化)
查询执行(代码生成)

代数优化

  • 输入是什么:查询树
  • 输出是什么
  • 逻辑是什么?
  • 典型的查询树的启发式优化
    • 选择运算应尽可能先做(下推到叶子节点)
    • 把投影运算和选择运算同时进行
    • 把投影同其前面或后面的双目运算结合起来(比如连接运算)——不用取出所有的列
    • 把某些选择同在他前面要执行的笛卡尔积结合起来成为一个连接运算,连接特别是等值连接运算要比同样关系上的笛卡尔积省很多时间
    • 找出公共子表达式——结果集缓存优化

物理优化——选择什么查询方法

9.1 关系数据库的查询处理

9.1.1 查询处理步骤

  • 查询分析——词法分析+语法分析
    输入:SQL语句
    输出:语法树
  • 查询检查——语义分析、视图消解、符号名转换、安全性检查、完整性初步检查
    输入:语法树
    输出:查询树
  • 查询优化
    输入:查询树
    输出:(优化后的查询树——选择下推、投影与二目运算的同时做、连接)查询执行计划——在叶子节点增加用什么方式查询
  • 查询执行

9.1.2 实现查询操作的算法示例

选择操作的实现
  • 如果有多个选择条件,考虑分步骤查询的结果集大小(信息增益可还行哈哈哈,其实是叫选择率)也可分别查找做交集
  • 全表扫描方法:代价是数据在磁盘中占的页数——与内存大小无关
  • 索引扫描方法:通过索引找到数据在磁盘的哪个页上面——如果查找索引的开销是N,那么索引扫描方法的开销是N+1(如果需要查找的很多,考虑是否是连续存放,开销会相差很大)
    • 索引方法:B+树索引、hash索引、聚簇索引——根据不同索引确定不同的N
    • 范围查找比较多时用B+树,等值查询比较多时候用hash

主索引:顺序文件追加存放(大数据文件常用)
聚簇索引:文件的存放顺序是和某一个索引的顺序是一致的
– 查找的时候可以折半查找提高效率

外排序
student表有10个数据块,但是内存只能放3块数据块,这种限制下的一趟一趟排序,先分组使每块数据内部有序,IO20次,再竖着读,一次输出一页,再读进一页,循环,先保证输出的9个是有序的,哪行空了哪行读取下一页。最后一次读入排序完成之后不算输出,直接传送到用到它的地方了。
N块数据M块内存:IO次数是 N ∗ ( [ log ⁡ M N ] ∗ 2 + 1 )

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值