Page 206 - 《软件学报》2021年第10期
P. 206
3178 Journal of Software 软件学报 Vol.32, No.10, October 2021
询重写、查询优化这 3 个步骤,最终生成物理查询计划.查询执行阶段则是执行查询编译生成的物理查询计划.
我们以关系数据库为例,关系数据库引擎 [41] 下的单查询执行流程如图 1 所示,不同的颜色代表不同的线程.其中,
解析器、转换器和优化器位于查询编译阶段,执行引擎位于查询执行阶段.在整个查询过程中,每个客户端所提
交的查询实例始终作为一个独立的线程在程序中运行,不同客户端提交的查询之间互不影响.
提交查询1 SELECT FROM WHERE 解析1 转换1
Send query 1 查询1 Parse 1 解析树1 Convert 1
客户端1 Client 1 Query 1 Parse tree 1
提交查询2 SELECT FROM WHERE 解析2 转换2
解析树2
Send query 2 查询2 Parse 2 Parse tree 2 Convert 2
客户端2 Client 2 Query 2
SELECT FROM WHERE 解析3
提交查询3 转换3
Send query 3 Parse 3
查询3 解析树3 Convert 3
客户端3 Client 3 Query 3 Parse tree 3
解析器 转换器
Parser Converter
数据 数据字典
Data Data dictionary
ID Name Age Country 执行1 查询优化1
Evaluate 1 物理执行计划1 Optimize 1 逻辑执行计划1
查询结果1 Physical plan 1 Logical plan 1
Result 1
ID Name Age Country 执行2 查询优化2
Evaluate 2 物理执行计划2 Optimize 2
查询结果2 Physical plan 2 逻辑执行计划2
Result 2 Logical plan 2
ID Name Age Country 执行3 查询优化3
Evaluate 3 Optimize 3 逻辑执行计划3
查询结果3 物理执行计划3 Logical plan 3
Result 3 Physical plan 3
执行引擎 优化器
Evaluation engine Optimizer
Fig.1 Query execution process of relational database engine
图 1 关系数据库引擎下的查询执行流程
数据库中的并发通常是指当前时刻正在执行的工作单元,比如当前时刻正在执行 10 个查询,则并发量为
10.并发是数据库系统中非常重要的属性,是最通用的负载定义.吞吐量即单位时间能够处理的查询数量.响应
时间即查询的处理时间与等待时间之和.并发的高低直接影响了一个数据库系统的吞吐量和平均响应时间.随
着系统并发量的提升,吞吐量和平均响应时间均逐渐增加而达到瓶颈.传统数据库由于受限于单次查询的执行
模式,其性能受到并发的严重制约.而本文所提到的多查询的执行模式,旨在减少高并发对数据库系统所带来的
负面影响.
为了后文讨论方便,我们将数据库系统中的查询语句称为查询表达式,查询表达式中的一部分被称为子表
达式,被多个查询表达式所共有的查询表达式称为公共查询子表达式.查询语句的树结构表达方式称为查询树,
又称为查询计划树.在查询优化阶段,通过查询搜索算法找出的代价最小的查询计划树称为最优查询路径.将最
优查询路径中的节点替换为物理运算符后,生成的查询计划树即为物理查询计划.
多查询共享是指多个并发查询在查询执行的各个阶段,合并相似的子表达式,共用相同的查询计划,共享相
同的访问数据或者相同的计算过程.通常,查询共享、共享查询、多查询优化在无特别说明的情况下都指的是
多查询共享.从计算机程序的角度来说,多查询共享是指多个查询或者多个查询的子表达式在一个线程执行,这
与“单次查询”有着本质的不同.