查询成本估算

2024 年 8 月 28 日 | 阅读 2 分钟

在前一节中,我们了解了查询处理步骤和评估计划。虽然系统可以为查询创建多个计划,但选择的方法应该是所有方法中最好的。这可以通过根据预估成本比较每个可能的计划来实现。要计算任何计划的净预估成本,应确定计划中每个操作的成本,并将它们组合起来以获得查询评估计划的净预估成本。

查询评估计划的成本估算以各种资源来计算,包括:

  • 磁盘访问次数
  • CPU 执行查询所需的时间
  • 分布式或并行数据库系统中的通信成本。

为了估算查询评估计划的成本,我们使用从磁盘传输的块数以及磁盘寻道次数。假设磁盘的平均块访问时间为 ts 秒,传输 x 个数据块需要 tT 秒。块访问时间是磁盘寻道时间和旋转延迟之和。如果执行 S 次寻道,则所需时间为 b*tT + S*tS 秒。如果 tT=0.1 毫秒,tS =4 毫秒,块大小为 4 KB,传输速率为每秒 40 MB。通过这些,我们可以轻松计算给定查询评估计划的预估成本。

通常,在估算成本时,我们会考虑可能发生的 worst case。用户假设最初数据仅从磁盘读取。但信息可能已存在于主内存中。然而,用户通常会忽略这一点,因此实际执行成本会低于估算值。

响应时间,即执行计划所需的时间,可用于估算查询评估计划的成本。但由于以下原因,在不实际执行查询评估计划的情况下计算响应时间会变得困难:

  • 当查询开始执行时,响应时间将取决于缓冲区中存储的内容。但在查询处于优化模式时,很难检索这些信息,或者根本不可用。
  • 当存在具有多个磁盘的系统时,响应时间取决于一个询问:“访问是如何在磁盘之间分配的?”。在没有详细了解磁盘上的数据布局的情况下,很难进行估算。
  • 因此,优化器宁愿减少查询计划的总体资源消耗,而不是最小化响应时间。因此,为了估算查询评估计划的成本,最好最小化用于访问磁盘的资源使用或额外资源的使用。