`

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

阅读更多

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

循环、哈希与合并连接比较 

      在分别讨论了循环、哈希与合并连接的执行计划成本规则之后,现在将3个连接类型放到适合各自条件的环境下一起比较。 
下面的图2-27显示了循环、哈希与合并连接在1P/2P系统上的启动成本。外部源和内部源启动成本描述了索引搜索的基本成本包括每行成本0.0000011。连接成本也除去第一行,这样似乎仅有个案是少量变化的。4P系统的启动成本仅在索引搜索基本成本(0.003283025)上不同。


 
图2-27.循环、哈希与合并连接在1P/2P系统上索引搜索的启动成本


      表2-1显示了在一对一的循环、哈希与合并连接在两个表都有明确的SARG下的每行成本和每页成本。每行(/r)成本适用于所有行,每页(/p)成本仅适用于需要增加的叶页。每行和每页总成本的规则需要将每页条件计算在内。

Per row costs 1-1

Outer Source

Inner Source

Join

Total

Loop 0.00000110/r 0.00007960- 0.00000418/r 0.000084880-
Hash +0.00074074/p ~0.00015400/r ~0.00001881/r ~0.000155280
Merge 0.00000110/r 0.00000110/r ~0.00000446/r +0.00074074/p

表2-1.连接里增加行的成本规则构成

 

      表2-2显示了每页10行和100行时计算得到的每行总成本,此时还要计算增加的叶页成本。

Per row costs 1-1

10 rows / page

100 rows / page

Loop 0.0002294 0.0001627
Hash 0.0001692 0.0000358
Merge 0.0001548 0.0000215

 

表2-2.连接里增加行的成本规则构成


      循环连接的启动成本最低且确定。这主要是由于循环连接操作自身没有而哈希与合并连接各自有~0.017770与~0.0056046的基本成本。 
3个连接的外部源成本相同,都是索引搜索操作。3个连接类型在每行成本结构上的不同大部分来自内部源,部分来自连接自身。循环连接的内部源成本结构反映了重复的索引搜索操作。哈希与合并连接的内部源成本结构仅仅是索引搜索操作。连接自身的每行成本循环连接是最低的,紧随的是合并连接而哈希连接大约是循环连接的4倍。 
      少量行参与时循环连接的成本结构有最低的计划成本。合并连接有最低的总的每行成本,接着是哈希连接,而循环连接有最高每行成本。合并连接总是比哈希连接的计划成本低。在一些行参与时,合并连接的开销小于循环连接。在大类行参与时,哈希连接也比循环连接的开销低。合并与哈希连接的好处在于对于高密度(每页行数)索引来说每行成本是最好的。当每页里的行数即密度低时,内部源的每行成本抵消了合并与哈希连接的这一好处。 
表2-3显示了内部源增加行的每行成本。

 

Additional IS costs per row Inner Source Join
Loop 0.00000110/r +0.00074074/p 
0.00000418/r
Hash 0.00000110/r +0.00074074/p 
0.00000523/r 
Merge 0.00000110/r +0.00074074/p 0.00000237/r

表2-3增加行的内部源成本


      注意循环连接的每页组件仅适用于外部源每行连接到内部源足够多的行以要求额外的叶页的情形,而哈希与合并连接的每页组件适用于内部源的所有行的总和要求额外的叶页的情形。如果每个表的行数差别很大,那么哈希和合并连接就会丧失其好处,因为循环连接有更低的内部源每行成本。 
图2-28a和2-28b显示了循环、哈希与合并连接在为内部源和外部源表指定明确的搜索参数情形下1P/2P系统的正常的总成本,此时每个表有适当的索引,且外部源的每一行正好连接到内部源的一行。查询成本的计算和1P/2P系统的单行索引搜索成本(0.0064081)有关。


 
图2-28a.1P/2P系统上的循环、哈希与合并连接的总成本(对数比例)


 
图2-28b.1P/2P系统上的循环、哈希与合并连接的正常成本(线性比例)


      循环连接操作自身没有启动成本,仅在内部源和外部源表的索引搜索操作上有启动成本。哈希连接操作的启动成本在1P/2P系统上刚刚少于索引搜索的3倍而总的启动成本刚刚少于索引搜索操作的5倍。合并索引的启动成本在1P/2P系统上刚刚少于单个索引搜索而总的启动成本也稍微少于索引搜索的3倍。当两个表上有适当的的聚集索引或覆盖索引可用时,合并连接变得比循环连接在40行时有利,哈希连接则在~160行时比循环连接有利。在这个例子里,执行计划使用紧凑的高密度(每页超过400行)的覆盖索引。对于低密度的索引来说交叉点在更高的位置。 
      图2-29显示了4P系统的循环、哈希与合并连接的成本。4P系统的3个类型的连接的交叉点与1P/2P系统稍微有些不同。在4P服务器上,索引搜索基本I/O成本大约是1P/2P系统的一半。哈希与合并连接基本成本在1P/2P和4P系统上没有变化,所以启动成本在绝对数值上更低,但4P系统的索引搜索成本更高。


 
图2-29.4P系统上的循环、哈希与合并连接的正常成本(线性比例)


      图2-30显示了带排序的合并和多对多合并连接和标准的循环、哈希、合并连接的比较。

 
图2-30.带排序的合并和多对多合并连接与循环、哈希、合并连接的比较(都在4p系统上)


      带排序的开销在参与行不多时稍微少于哈希合并连接,但在参与行很多的时候开销就更高了。多对多合并连接在参与行不多时成本介于常规的合并和哈希连接之间,但在参与行很多的时候开销就要比两者都高。 
      在两个表中仅有一个存在搜索条件的情形下,哈希与合并连接会要求对另一个表进行表扫描。循环连接可以使用连接条件上的索引来避免表扫描。由于在1P/2P系统上表扫描基本成本是索引搜索基本成本的6倍(4P系统上是12倍),并且比增加的行成本高得多。所以合并与循环、哈希与循环的交叉点位于参与行充分多的时候(500-700行)。 
      当然,循环、哈希与合并连接的特征在BOL的“优化数据库性能”一节的“高级查询调优概念”里有描述。然而,看看实际的数字而不是依赖于定性的描述如小规模相似是值得的。

 

Tag标签: SQLServer2000

分享到:
评论

相关推荐

    剖析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过程优化详解

    在SQL Server 2000这个经典版本中,数据库管理员和开发者经常面临性能优化的挑战。本篇将深入探讨SQL Server 2000过程优化的相关知识点,旨在帮助你提升数据库系统的运行效率。 1. **查询优化器**:SQL Server 2000...

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

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

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

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

    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补丁

    5. **管理工具改进**:SQL Server 2000 SP3可能改进了企业管理器、查询分析器等管理工具的功能,提供更好的用户体验和更强大的管理能力。 6. **复制功能增强**:对于依赖SQL Server复制功能的应用,SP3可能包含了...

    SQL执行计划

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

    SQLServer2000高级编程技术.pdf.rar

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

    sqlserver中的执行单元

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

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

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

Global site tag (gtag.js) - Google Analytics