`

SQL Server 2000执行计划成本(1/5)

阅读更多

[转]SQL Server 2000执行计划成本(1/5)

表扫描 

      当没有合适的索引时就发生表扫描操作。这可能意味着没有索引存在或者预期有很多行且比扫描整个表开销更少。如果表是一个堆表,执行计划显示表扫描操作;如果表有聚集索引或者所有需要的值都在一个非聚集索引里如图2-6显示,那么执行计划显示一个索引扫描操作。


 
图2-6.表扫描的执行计划和聚集索引扫描操作


      图2-7和2-8显示表扫描和索引扫描操作的成本细节。索引扫描和表扫描有相同的成本结构。


 
图2-7.表扫描的成本细节 
 
图2-8.聚集索引扫描的成本细节


通过检查表的一个范围的页和行的I/O和CPU成本,执行计划成本规则如下:

I/O Cost = 0.0375785 + 0.000740741 per additional page
CPU Cost 
= 0.0000785 + 0.0000011 per row

I/O的基本成本(0.0375785)正好是6×0.0062500+0.0000785。通过任何平台(1P/2P/4P)观察到的表扫描成本组成没有任何变化。 
索引搜索和表扫描的交叉点 
      每个表只能有一个聚集索引。为每个查询建立覆盖索引而不使用聚集索引总是不切实际的。那么执行计划里可能执行下面两个选项中的一个:1)一个带有书签查找的索引搜索,或者2)表扫描(或聚集索引扫描)。当从搜索参数里预期只有少量的行时,执行计划采用带书签查找的索引搜索。当预期有很多行时,执行计划采用表扫描。正确的理解执行计划在哪儿从一个变为另一个是有用的。


 


      表扫描的成本通过表使用的页数和表总共的行数来决定。表扫描的成本不依赖于返回的行数(除非使用聚合函数)。索引搜索操作的成本仅依赖于返回的行数和选择行数所在的索引的叶页数,但不依赖于影响索引深度的表的绝对大小。书签查找操作的成本是由表的大小影响的(以不确定的倍数关系影响),但适当地与行数线性相关。 
      表扫描开销小于带有书签查找的索引搜索的交叉点是通过使两个执行计划成本规则相等来决定的。通过把在书签查找I/O成本的不确定的倍数作为修正因子(CF)且撇开小成本的组成部分,交叉点就能大概被确定了。 
两个执行计划在固定的启动成本上的区别是1P/2P系统有大约5个书签查找而4P系统有11个。对于1P/2P系统每增加一个书签查找行的成本是0.0062511的一倍而4P系统是0.0031260的一倍,包括I/O成本和CPU成本。表扫描里每增加一页的成本是0.000740741+0.0000011×(每页的行数)。这样,交叉点遵循的规则大约和下面的相关:索引搜索条件涉及到的行数和表的页数,术语称为页行比(pages-to-rows ratio)和修正因子(CF)。页行比在表扫描增加的成本与一个书签查找的成本相等时简单的指页数。修正因子(CF)是书签查找成本的百分比。 

Rows ~  5  + 页数 ÷ (CF×(页行比))  (1P/2P系统)
        
~ 11 + 页数 ÷ (CF×(页行比))  (4P系统)

 

既然表扫描里增加页的成本依赖于每页的行数,那么页行比就反映了每页的行密度。如图2-9所显示。


 
图2-9.页行比对每页的行密度


      例如,考虑平均密度为每页100行的一个表。对于1P/2P系统的页行比是7.35且CF是~0.90。对于一个有506页的表来说,预计的交叉成本大约在81.5行发生,实际是84行。换句话说,当要求书签查找的时候,查询优化器为了使用索引而非表扫描需要索引的可选择性好于表里每0.9×7.35页就有1行。也许在成本交叉点和计划事务点处有细微的不同。 
      图2-10显示了索引搜索和被看作行功能的书签查找的执行计划成本和表扫描50000行每页99行的成本。表扫描的成本不依赖于返回的行。


 
图2-10.有50000行且每页99行的表的计划成本


      图2-11共同显示了对于1P/2P和4P系统的索引搜索和作为行功能的书签查找计划的成本与表里计算页(假定每页100行)功能的表扫描的计划成本。为了比较也显示了作为行功能的覆盖索引搜索成本。如果知道页里表的大小,那么书签查找和表扫描的交叉点可以通过找到书签查找计划和表扫描有相同成本时的行数来决定,反之亦然。


 
图2-11.行/页计划成本


      由于在1P/2P系统和4P系统里索引搜索和书签查找成本的不同,在4P系统上要达到表扫描交叉点的书签查找量是1P/2P系统的大约2倍。假定有很多多处理器系统使用共享总线,那么4P系统比1P/2P系统延迟切换到高总线带宽操作如表扫描上似乎是合理的。这一点没有明晰的解释。 
      在有大量的行参与时,书签查找计划成本对于1P/2P系统来说是覆盖索引搜索的700多倍而4P系统是350多倍。在这个例子里,覆盖索引每页正好超过400行。 
      注意覆盖索引和表扫描在很少的行参与时计划成本非常平坦。这是因为增加行的成本相对于固定的索引搜索和表扫描的基本成本而言是很低的。事实上,基于1P/2P系统的成本规则而言增加800行的成本是覆盖索引搜索每页100行成本的两倍,4P系统是400行。在45页里4500行的表扫描成本是单行表扫描的两倍。

 

分享到:
评论

相关推荐

    剖析SQL Server执行计划

    ### 剖析SQL Server执行计划 #### 一、引言与概述 SQL Server执行计划是数据库管理系统在处理查询请求时所采用的一系列步骤和技术的集合。这些计划旨在优化查询性能,确保数据能够以最高效的方式被检索。本书《SQL...

    sql server分析执行计划样例

    SQL Server的执行计划是数据库性能优化的关键工具,它揭示了SQL Server如何执行查询以获取结果。执行计划由查询优化器生成,该优化器考虑了查询的多个因素,包括查询结构、索引可用性、表连接条件和搜索谓词等。优化...

    看懂 sql server 执行计划

    SQL Server 执行计划详解 SQL Server 的执行计划是数据库优化的关键步骤。通过查看执行计划,可以了解数据库的查询过程,从而进行优化和改进。本文将通过一个实践示例,介绍如何查看 SQL Server 的执行计划,并解释...

    解剖SQL执行计划

    ### 解剖SQL Server执行计划 #### 一、执行计划概览 在深入探讨SQL Server执行计划之前,我们首先需要理解什么是执行计划以及它为何如此重要。执行计划是SQL Server优化器为查询选择的最佳运行策略。当数据库...

    SQL_Server执行计划

    ### SQL Server执行计划详解 #### 一、引言 在数据库管理与优化的过程中,了解SQL Server执行计划至关重要。本文将详细介绍SQL Server执行计划的基本概念、如何捕获执行计划、解读执行计划以及如何利用这些信息来...

    浅析SQL Server中的执行计划缓存(上)

    在SQL Server中,执行计划缓存是一个至关重要的性能优化机制,它减少了编译查询计划所需的资源,提高了系统整体的响应速度。本文将深入探讨执行计划缓存的工作原理、为何需要缓存以及它所缓存的对象类型。 首先,...

    SQL Server 2000开发指南

    书中会详细介绍SQL Server 2000的备份策略,包括完整备份、差异备份和事务日志备份,并教授如何执行恢复操作以应对数据丢失或系统故障。 此外,性能调优是提升系统效率的重要手段。本书会探讨SQL Server 2000的性能...

    sqlserver2000数据库转移mysql5.pdf

    ### SQLServer2000至MySQL5数据库迁移详解 #### 一、迁移背景与目标 在信息技术快速发展的今天,企业可能会因为各种原因需要将现有的SQL Server 2000数据库迁移到MySQL 5环境中。这样的迁移不仅可以降低维护成本,...

    SQL Server 2000完结篇系列之八:SQL Server 2000过程优化详解

    1. **查询优化器**:SQL Server 2000的查询优化器是性能优化的核心。它通过分析查询语句,生成执行计划,选择最优的方式来执行SQL语句。理解查询优化器的工作原理,包括成本估算和执行计划的选择,对于优化至关重要...

    Sql Server 数据库超时问题的解决方法

    Sql Server 等待响应时间是指 Sql Server 数据库在执行查询或存储过程时,等待响应的时间。在 Sql Server 2000 中,可以通过设置 sp_configure 的 query wait 选项来调整等待响应时间。query wait 选项可以设定一个...

    SQL Server 2000完结篇系列之七:SQL Server 2000索引优化详解

    SQL Server 2000的查询优化器会自动选择最佳的执行计划,包括选择合适的索引。理解查询优化器的工作原理可以帮助我们更好地设计和使用索引。 总结,SQL Server 2000的索引优化是数据库性能调优的重要环节。通过对...

    sqlserver2000优化(必须的)

    以下是从标题“sqlserver2000优化(必须的)”和描述“sqlserver2000优化必看”中提取的关键知识点,这些知识点对于SQL Server 2000的高效运行至关重要。 ### 1. SQL Server 2000优化的重要性 SQL Server 2000作为...

    SQLServer 2000优化

    - 使用 SQL Server Profiler 工具来监控查询执行计划,并分析潜在的性能瓶颈。 - Query Analyzer 可以帮助识别那些消耗大量资源的查询,并给出优化建议。 6. **锁机制**: - 正确使用锁定机制可以避免并发访问时...

    通过分析SQL语句的执行计划优化SQL(总结)

    在不同的数据库系统中,如MySQL、Oracle、SQL Server等,都有相应的命令或工具用于查看SQL语句的执行计划,例如SQL Server的`SET SHOWPLAN_ALL`或`SET SHOWPLAN_TEXT`,Oracle的`EXPLAIN PLAN`。 4. **执行计划的...

    SQL2000 sp3补丁

    1. **错误修复**:SP3包含自SQL Server 2000 RTM(Release to Manufacturing)版本以来所有已知问题的修复,包括性能优化、查询处理、备份恢复、复制、安全性和兼容性等方面的问题。 2. **性能提升**:通过对查询...

    sqlserver中的执行单元

    当我们在SQL Server查询分析器中选择"Show Execution Plan"时,我们可以看到一个图形化的执行计划,它展示了SQL语句执行的逻辑流程。 执行计划由一系列的图标组成,每个图标代表一个数据库操作,如扫描、排序、连接...

    SQL执行计划

    例如,`GrantFritchey_SQLServerExecutionPlans_Code`这个文件很可能包含的是一个关于如何理解和解析SQL Server执行计划的代码示例。Grant Fritchey是一位知名的SQL Server专家,他的工作可能涉及深入探讨执行计划中...

    SQLServer2000高级编程技术.pdf.rar

    《SQLServer2000高级编程技术》这本书深入探讨了SQL Server 2000这一经典数据库管理系统中的高级编程技术。SQL Server 2000是微软公司推出的数据库平台,虽然现在已经有一些老旧,但其在许多企业中仍然占据着重要的...

    SQL Server 2000数据库中如何重建索引

    在SQL Server 2000中,索引是数据库中不可或缺的部分,它们加速查询性能,通过提供快速的数据访问路径。然而,随着数据的修改和更新,索引可能会变得碎片化,影响查询效率。这时,重建索引就成为了一个必要的优化...

Global site tag (gtag.js) - Google Analytics