📜  估计查询成本

📅  最后修改于: 2020-12-12 08:09:49             🧑  作者: Mango

估算查询费用

在上一节中,我们了解了查询处理步骤和评估计划。尽管系统可以为查询创建多个计划,但是所选方法应该是所有方法中最好的。可以通过比较每个可能的计划的估计成本来完成。为了计算任何计划的净估计成本,应该确定一个计划中每个操作的成本并将其合并以获得查询评估计划的净估计成本。

查询评估计划的成本估算是根据各种资源来计算的,这些资源包括:

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

为了估算查询评估计划的成本,我们使用了从磁盘转移的块数和要查找的磁盘数。假设磁盘的平均块访问时间为t s秒,并且平均需要t T秒来传输x个数据块。块访问时间是磁盘寻道时间和旋转等待时间的总和。它执行S搜寻,所花费的时间将为b * t T + S * t S秒。如果t T = 0.1 ms,t S = 4 ms,则块大小为4 KB,其传输速率为每秒40 MB。这样,我们可以轻松计算给定查询评估计划的估计成本。

通常,为了估算成本,我们考虑可能发生的最坏情况。用户假定最初只从磁盘读取数据。但是必须有一个机会,信息已经存在于主存储器中。但是,用户通常会忽略此影响,因此,实际执行成本会低于估计值。

响应时间,即执行计划所需的时间,可以用于估计查询评估计划的成本。但是由于以下原因,如果不实际执行查询评估计划,则很难计算响应时间:

  • 查询开始执行时,响应时间取决于缓冲区中存储的内容。但是,当查询处于优化模式时,此信息很难检索,或者也无法使用。
  • 当存在具有多个磁盘的系统时,响应时间取决于以下询问:“以哪种方式在磁盘之间分配访问权限?”。如果不了解磁盘上存在的数据布局,就很难进行估算。
  • 因此,优化程序不会减少对任何查询评估计划的响应时间,反而可以减少查询计划的总资源消耗。因此,为了估计查询评估计划的成本,最好将用于访问磁盘或使用额外资源的资源最小化。