`

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

阅读更多

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

Insert、Update和Delete 

      SQLServer里3个写操作是INSERT、UPDATE和DELETE(IUD)。如果加上约束、触发器和外键,写操作可以变得更复杂。这里仅关心基本的写操作。对于3个操作中的每一个,对于堆表和有聚集索引的表来说都有不同的图标,如图2-31、2-32和2-33所示。


图2-31.堆表和有聚集索引的表的Insert执行计划



图2-32.堆表和有聚集索引的表的Update执行计划



图2-33.堆表和有聚集索引的表的Delete执行计划


      图2-34显示了表插入的成本计划,图2-35显示了聚集索引插入的成本细节。图2-36和图2-37显示了表更新和聚集索引更新的成本细节。图2-38和图2-39显示了表删除和聚集索引删除的成本细节。 
      即使在表(堆)和聚集索引操作上的更新和删除操作有些不同,但成本几乎是一样的。索引搜索操作和在堆表里的表更新操作是分开的,但对聚集索引来说就是其中的一部分了。

 
图2-34.表插入成本细节


 
图2-35.聚集索引插入成本细节


 
图2-36.表更新成本细节


 
图2-37.聚集索引更新成本细节


 
图2-38.表删除成本细节


 
图2-39.聚集索引删除成本细节


      插入的I/O成本看来主要依靠表里目前的行数,如图C-1显示。插入的I/O成本对于每页320行和每页99行是相同的,而每页95行最高。然后I/O成本的差异少于0.7%。I/O成本相对于行的改变要在SQLServer停止重启后才能观察。这个改变在其他环境下是否能观察到还是个未知数。

图C-1.插入的I/O成本相对于目前表里的行的变化


      插入的I/O成本更少的依赖于每页的行数,表是否有聚集索引是一个非常微小的因素。图C-2显示了显示了与每页的行数的依赖关系。在表有无聚集索引之间的I/O成本的差异在第5个小数位。 

图C-2.插入的I/O成本

 

      更新操作可能是更新或插入或删除操作,依赖于被修改的列是固定列还是可变长列和是否有足够的空间来存储新的可变长数据。 
有时候需要插入几行到表里(不是来源于其他源)。通常的选择是分别写几个独立的Insert语句,这样每个语句会导致高的I/O成本(0.010021)。

INSERT N1C(ID,Value) VALUES (321,'TYI539087J')  
INSERT NIC(ID,Value) VALUES (322,'TYI539087J')

一个可选的方法是使用union操作符把数据形成一个单个的行集,如下所示:

INSERT N1C(ID,Value)  
SELECT 321,'TYI539087J'  
UNION ALL  
SELECT 322,'TYI539087J' 

用UNION ALL子句的Insert语句的执行计划如下: 


图2-40.使用UNION ALL操作符插入2行


在上面的例子里,常量扫描(Constant Scan)、串联(Concatenation)和Top操作符增加很小的成本(仅仅CPU),但插入的I/O成本只有一次。

Constant Scan CPU Cost = 0.000001157 per row 
Concatenation CPU Cost 
= 0.000000100 per row 
Top CPU Cost = 0.000000100 per row 

还有其他操作符如并行操作选项。如果时间允许的话再做讨论。


执行计划成本综述 
      执行计划成本规则的以下几点值得注意:

  • 索引搜索成本不依赖于索引深度
  • 书签查找成本不依赖于表类型(堆表还是有聚集索引的表)
  • 索引搜索和书签查找的I/O成本依赖于平台,其他成本不是
  • 锁暗示(行锁、页锁、表锁)不影响成本规则
  • 在索引搜索和连接操作里增加行的每行成本通常比最初的行的成本低。

      这几点适合于SQLServer查询优化器用来决定最优的执行计划的成本规则。SQLServer文档没有地方宣称有所有影响查询成本的执行计划成本规则的因素。成本规则是否基于实际的测量或者代码路径长度估计的一些形式也是没有阐明的。 
理想地,成本规则应该尽可能的准确以便查询优化器能做出最好的执行计划的决定。由于我们还不知道这些成本规则和实际的测量值是怎样比较的,所以此时还不能从真实的查询成本里得到更好的结论。 
      此时可以做出一个结论。有时候需要用测试数据评估数据库应用程序,而不是用生产环境下的数据。为了为产品数据库观察可能的查询执行计划,仅需要用正确的分布数据来产生填充测试数据库。不必填充整个预期的产品环境的大小。例如,在一个订单数据库里,如果典型的客户在Orders表里有10条记录且每笔订单在Order_Line表里也有10条记录,那么用那种分布填充一些测试客户可以生成除书签查找和表扫描的预期的执行计划。

 

Tag标签: SQLServer2000

分享到:
评论

相关推荐

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

    (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框...

    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(光盘内容)

    (2)打开SQL Server 2000中的“企业管理器”,然后展开本地服务器,在“数据库”数据项上单击鼠标右键,在弹出的快捷菜单中选择“所有任务”/“附加数据库”菜单项。 (3)将弹出“附加数据库”对话框,在该对话框...

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

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

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

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

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

    Windows 98/Me/2000/XP, Microsoft? Windows Server 2003 以及Microsoft? SQL Server 2000/2005均是微软公司产品,所有版权和权利归微软公司。 [返回页首] 1.1 系统特色 1.灵活的模板管理功能,通过报表模板定义...

    经典SQL语句大全

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

    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企业合同管理系统主要用于实现企业合同的管理, 基本功能包括:修改个人密码、合同信息管理、收款提醒模块、安全退出系统等。...

    WinForm+SQLServer酒店管理系统.zip

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

    sql经典语句一部分

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db 后...

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

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

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

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

    基于.NET5+IdentityServer4+Vue+Sqlserver 的统一授权认证系统,包含系统管理界面。.zip

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

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

    在SQLServer中分组时:不能以text,ntext,image类型的字段作为分组依据 在selecte统计函数中的字段,不能和普通的字段放在一起; 13、对数据库进行操作: 分离数据库: sp_detach_db; 附加数据库:sp_attach_db ...

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

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

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

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

Global site tag (gtag.js) - Google Analytics