DBMS 中的查询处理

2025年2月12日 | 阅读 3 分钟

查询处理是在从数据库中提取数据时执行的活动。在查询处理中,需要经过多个步骤才能从数据库中获取数据。涉及的步骤包括:

  1. 解析和翻译
  2. 优化
  3. 求值

查询处理的工作方式如下:

解析和翻译

由于查询处理包含某些数据检索活动。最初,给定的用户查询会被翻译成高级数据库语言,如 SQL。然后将其翻译成可以在文件系统的物理级别进一步使用的表达式。在此之后,实际进行查询的评估以及各种查询优化转换。因此,在处理查询之前,计算机系统需要将查询翻译成人类可读且易于理解的语言。因此,SQL 或结构化查询语言是人类的最佳选择。但是,它并不完全适合系统中的查询内部表示。关系代数非常适合查询的内部表示。查询处理中的翻译过程类似于查询的解析器。当用户执行任何查询时,为了生成查询的内部形式,系统中的解析器会检查查询的语法,验证数据库中关系(表)的名称、元组以及最终所需的属性值。解析器会创建一个查询的树,称为“解析树”。然后,将其翻译成关系代数的形式。通过这一点,它均匀地替换了查询中使用视图的所有用法。

因此,我们可以通过下面描述的图来理解查询的工作原理:

Query Processing in DBMS

假设用户执行一个查询。正如我们已经学到的,有多种从数据库中提取数据的方法。在 SQL 中,用户想要获取工资大于或等于 10000 的员工的记录。为此,将采用以下查询:

select emp_name from Employee where salary>10000;

因此,为了让系统理解用户查询,需要将其翻译成关系代数的形式。我们可以将此查询转换为关系代数形式,如下所示:

  • σsalary>10000salary (Employee))
  • πsalarysalary>10000 (Employee))

在翻译给定查询后,我们可以使用不同的算法来执行每个关系代数操作。因此,查询处理就这样开始工作了。

求值

为此,除了关系代数翻译之外,还需要用用于指定和评估每个操作的指令来注释翻译后的关系代数表达式。因此,在翻译用户查询后,系统会执行查询评估计划。

查询评估计划

  • 为了完全评估查询,系统需要构建查询评估计划。
  • 评估计划中的注释可以引用要用于特定索引或特定操作的算法。
  • 这种带有注释的关系代数被称为 **评估图元**。评估图元携带评估操作所需的指令。
  • 因此,查询评估计划定义了一系列用于评估查询的图元操作。查询评估计划也称为 **查询执行计划**。
  • **查询执行引擎** 负责生成给定查询的输出。它获取查询执行计划,执行它,并最终为用户查询生成输出。

优化

  • 查询评估的成本会因查询类型的不同而有所不同。尽管系统负责构建评估计划,但用户并不需要编写高效的查询。
  • 通常,数据库系统会生成一个有效的查询评估计划,该计划会将其成本降至最低。数据库系统执行的这种任务称为查询优化。
  • 为了优化查询,查询优化器应该对每个操作进行估计成本分析。这是因为整个操作成本取决于分配给各个操作的内存、执行成本等。

最后,在选择评估计划后,系统会评估查询并生成查询的输出。


下一主题表达式求值