`

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行的表扫描成本是单行表扫描的两倍。

 

分享到:
评论

相关推荐

    VC+SQL SERVER学生信息管理系统

    (1)将database文件夹中的两个文件拷贝到SQL Server 2000安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中...

    SQL Server 2005海量数据处理

    对海量数据的处理一直是一个令人头痛的...SQL Server 2005新增的表分区功能,可以对数据进行合理分区,当用户在访问部分数据时,SQL Server最佳化引擎可以根据数据的实体存放,找出最佳的执行方案,而不至于大海捞针。

    Microsoft SQL Server中的分布式/异构查询处理

    大学生在线实习及就业成才互动服务平台项目提出了一个在Microsoft SQL Server数据库系统中的分布式、异构查询处理器(DHQP)的结构总览,以支持对大容量的不同数据源的查询。主要突出解释了此结构的3个主要方面,首先,...

    sql server 编译与重编译详解

    SQLSERVER编译与重编译 编译的含义 ...SQLSERVER会根据所涉及的对象的架构(schema)、统计信息以及指令的具体内容,估算可能的执行计划, 以及他们的成本(cost),最后选择一个SQLSERVER认为成本

    SQL Server系统调优解决方案

    例如:如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中...

    学生管理系统vc6.0+sql sever2000(光盘内容)

    (1)将database文件夹中的两个文件拷贝到SQL Server 2000安装路径下的Data文件夹中。 (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中...

    北邮数据库实验8 数据查询分析优化实验

    1. 在SQL Server Management Studio平台下,通过观察Select/Insert/delete/update等SQL语句的查询执行计划,分析查询执行计划中连接、选择、投影等关系代数操作的实现方式及其执行成本。熟悉了解SQL SERVER数据库中...

    SQLSERVER编译与重编译发生场景及重用的利弊介绍

    编译的含义 ————————————————————...在编译的过程中,SQLSERVER会根据所涉及的对象的架构(schema)、统计信息以及指令的具体内容,估算可能的执行计划,以及他们的成本(cost),最后选择一个SQLS

    经典SQL语句大全

    法一:select * into b from a where 1<>1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    excel 报表上报及统计程序介绍

    (3)MS SQL Server 2000安装/MSDE2000/MS SQL Server 2005 /MS SQL Server 2008 (4) IE需要升级到6.0以上。 (仅对Windows 2000的各个版本) 2.Windows server 2003/2008 (1)IIS安装 (2)MS SQL Server ...

    SQL Server中with as使用介绍

    因为UNION ALL的每个部分可能相同,但是如果每个部分都去执行一遍的话,则成本太高,所以可以使用WITH AS短语,则只要执行一遍即可。如果WITH AS短语所定义的表名被调用两次以上,则优化器会自动将WITH AS短语所获取...

    JAVA_JSP_sql server企业合同管理系统设计软件源码+数据库+WORD毕业论文文档.zip

    JAVA_JSP_sql server企业合同管理系统设计软件源码+数据库+WORD毕业论文文档: JAVA_JSP企业合同管理系统主要用于实现企业合同的管理, 基本功能包括:修改个人密码、合同信息管理、收款提醒模块、安全退出系统等。...

    sql经典语句一部分

    法一:select * into b from a where 1<>1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; 3...

    数据库操作语句大全(sql)

    法一:select * into b from a where 1<>1(仅用于SQlServer) 法二:select top 0 * into b from a 2、说明:拷贝表(拷贝数据,源表名:a 目标表名:b) (Access可用) insert into b(a, b, c) select d,e,f from b; ...

    WinForm+SQLServer酒店管理系统.zip

    业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供...

    基于C#和SQL server的图书管理系统.zip

    业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的...

    asp.net mvc数据库SqlServer后台管理系统.zip

    业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供...

    asp+sql server办公自动化管理系统 毕业设计论文

    【摘要】 随着信息技术的飞速发展和日趋激烈...企业网上办公自动化将人从繁琐、无序、低序、低端的工作中解放出来从事核心事务,整体提高了单位办事效率和对信息的可控性,降低办公成本,提高执行力,使管理趋于完善。

    基于C#+sqlserver的学生信息管理系统.zip

    业务流程管理模块:设计、执行、监控和优化业务流程,确保各项任务按照预定规则高效运转。 决策支持模块:基于数据分析结果,为管理者提供直观的可视化报告,辅助其进行科学决策。 用户界面与交互模块:提供友好的...

    ADO.NET中SQLServer数据库连接池

    这意味着在执行应用程序期间,许多相同的连接将反复地打开和关闭。为了使打开的连接成本最低,ADO.NET使用称为连接池的优化方法。连接池减少新连接需要打开的次数。池进程保持物理连接的所有权。通过为每个给定的...

Global site tag (gtag.js) - Google Analytics