资源描述:
《对比sql server中xml auto和t》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、对比SQLServer中XMLAUTO和T XMLAUTO功能与T-SQL命令 作为一个DBA,我倾向于关注性能方面的问题,因此我要确定使用XML(扩展标记语言)并不会对性能产生影响。在本文里,我会通过比较XMLAUTO功能和标准的T-SQL命令来显示性能上的差异。在我的测试过程中,我会仅仅涉及到XMLAUTO功能的一个比较小的基础的部分,同时我也建议大家在你自己的环境当中来测试你将要使用的XML功能。 测试环境描述 在我的测试当中,我会建一个包含了一万行记录的表格,如下所述: 表格包含的记录如下: se
2、lect*fromEmployes XMLAuto处理大量的数据 在我的表格中我使用了如下的查询语句,以一个标准的T-SQL查询开始,并且接着每次都向命令添加了更多的XML结构: SELECT*FROMEmployes Go SELECT*FROMEmployesFORXMLAUTO go SELECT*FROMEmployesFORXMLAUTO,TYPE go SELECT*FROMEmployesFORXMLAUTO,TYPE,ELEMENTS go SELECT*FROMEmployes
3、FORXMLAUTO,TYPE,ELEMENTS, ROOT go 我在SQLProfiler中监控了这些命令。我发现Duration列在SQLProfiler中是不准确的。当QueryAnalyzer仍然在处理结果的时候已经执行的XML命令已经在Profiler中显示了。因此我会忽略掉这列,并且观察其他的资源:CPU和I/O。下面是对五个命令执行三次的监控结果: 这看起来显示了T-SQL查询比其他的方式表现的要好。XMLAUTO的XML查询使用了超过八倍的CPU资源但却产生了一样的I/O。复杂的XML命令比
4、T-SQL命令消耗了超过80倍的读取操作,同时还有许多写操作和上面的六倍的CPU。 什么时候分析命令产生的I/O统计数据: Table'Employes'.Scancount1,logicalreads8247,physical reads0,read-aheadreads7520,loblogicalreads0,lob physicalreads0,lobread-aheadreads0. Table'Employes'.Scancount1,logicalreads8247
5、,physical reads0,read-aheadreads4221,loblogicalreads0,lob physicalreads0,lobread-aheadreads0. Table'Employes'.Scancount1,logicalreads8247,physical reads500,read-aheadreads2586,loblogicalreads0,lob physicalreads0,lobread-aheadreads0. Table'L命令正在创
6、造一个LAuto处理相对少量的数据 我会使用相同的表格做同样的测试,但是这次读取更少的数据。 首先,我会为ID列建造一个索引: >createuniquec123下一页>>>>这篇文章来自..,。lusteredindexUQ_EmployesonEmployes(id) 接下来我会使用一个ployes'.Scancount1,logicalreads12,physical reads0,read-aheadreads0,loblogicalreads0,lobphysical reads0,l
7、obread-aheadreads0. Table'Employes'.Scancount1,logicalreads12,physical reads0,read-aheadreads0,loblogicalreads0,lobphysical reads0,lobread-aheadreads0. Table'Employes'.Scancount1,logicalreads12,physical reads0,read-aheadreads0,loblogicalreads
8、0,lobphysical reads0,lobread-aheadreads0. Table'Employes'.Scancount1,logicalreads12,physical reads0,read-aheadreads0,loblogicalreads0,lobphysical r