1、查询处理步骤:
1)语法分析与翻译。系统首先必须把查询语句翻译成系统的内部表示形式(关系代数表达式)。语法分析器检查用户查询的语法,验证查询中出现的关系名数据库中的关系名等。
2)优化。构造具体有最小查询执行计划代价。为了优化查询,查询优化器必须知道每个操作的代价。
3)执行。
2、查询执行计划:用云执行一个查询的原语操作序列。
查询执行引擎:接受一个查询执行计划,执行该计划并把结果返回给查询。
3、查询代价的度量:
磁盘存取,执行一个查询所用CPU时间,并行/分布式数据库系统中的通信代价,等。
在大型数据库中,主要代价是在磁盘上存取数据。我们用传送磁盘块数和搜索磁盘次数来度量查询计算计划的代价。
4、优化器尽可能地降低查询计划总的资源消耗,而不是尽可能地缩短响应时间。
5、选择运算:
在查询处理中,文件扫描是存取数据最低级的操作。文件扫描是用于定位、检索满足选择条件的记录的搜索算法。在关系系统中,若关系保存在单个专用的文件中,采用文件扫描就可以读取整个关系。
6、索引扫描:使用索引的搜索算法。共几种:
A1(线性搜索),A2(主索引,码属性等值比较),A3(主索引,非码属性等值比较),A4(辅助索引,等值比较),A5(主索引,比较),A6(辅助索引,比较),A7(利用一个索引的合取选择),A8(使用组合索引的合取选择),A9(通过标识符的交实现合取选择),A10(通过标识符的并实现析取选择),合取,析取,取反。
7、排序:
通过在排序码上建立索引,然后使用该索引按序读取关系,可以完成对关系的排序。
外排序:对不能全部存放在内存中的关系的排序。常用技术为外部排序归并算法。
1)第一阶段,建立多个排序好的归并段。每个归并段都是排序过的,但仅包含关系中的部分记录。
2)第二阶段,对归并段进行归并。归并阶段的输出是已排序的关系。输出文件也被缓冲以减少写磁盘次数。
8、混合归并-连接算法把已排序关系与B+树辅助索引叶结点进行归并。所得结果文件包含了已排序关系的元组及未排序关系的元组地址。
9、去除重复:
可以用排序方法或散列来实现去除重复。排序时等值元组相互临近,删除其他副本只留一个元组副本即可。
10、外连接——实现:
1)计算相应的连接。
2)对连接算法加以修改。如:当两个关系的归并完成后,将两个关系中那些与另一个关系的任何元组都不匹配的元组填充空值后写到结果里。
11、双缓冲:
允许CPU活动与I/O活动并行,从而提高算法执行速度。(使用两个缓冲区,一个用于连续执行算法,一个用于写出结果)
通过为输出缓冲区分配额外的磁盘块以及每次同时写出多个块,可以减少磁盘搜索次数。
12、流水线计算:
通过减少查询执行中产生的临时文件数,可以提高查询执行的效率。减少临时文件数是通过将多个关系操作组合成一个操作的流水线来实现的,其中一个操作的结果将传送到下一个操作。
流水线实现:
1)在一条需求驱动的流水线上。
2)在一条生产者驱动的流水线上。
3)双流水线连接。
如果两个输入均在连接属性上有序,并且连接条件是等值连接,则可以使用归并连接,并且在两个输入都可以流水线化。