对比SQL Server中XML AUTO和T-SQL命令
http://tech.ddvip.com 2007年08月02日 社区交流
内容摘要:在本文里,我会通过比较XML AUTO功能和标准的T-SQL命令来显示性能上的差异。在我的测试过程中,我会仅仅涉及到XML AUTO功能的一个比较小的基础的部分,同时我也建议大家在你自己的环境当中来测试你将要使用的XML功能。
执行计划同样也显示了相同的工作量:

1000rows:
SELECT*FROMEmployeswhereidbetween5000and
6000
go
SELECT*FROMEmployeswhereidbetween5000and
6000
FORXMLAUTO
go
SELECT*FROMEmployeswhereidbetween5000and
6000
FORXMLAUTO,TYPE
go
SELECT*FROMEmployeswhereidbetween5000and
6000
FORXMLAUTO,TYPE,ELEMENTS
go
SELECT*FROMEmployeswhereidbetween5000and
6000
FORXMLAUTO,TYPE,ELEMENTS,ROOT
goSQLProfiler:

StatisticsI/O:
Table'Employes'.Scancount1,logicalreads87,physical
reads0,read-aheadreads0,loblogicalreads0,lobphysical
reads0,lobread-aheadreads0.
Table'Employes'.Scancount1,logicalreads87,physical
reads0,read-aheadreads0,loblogicalreads0,lobphysical
reads0,lobread-aheadreads0.
Table'Employes'.Scancount1,logicalreads87,physical
reads0,read-aheadreads0,loblogicalreads0,lobphysical
reads0,lobread-aheadreads0.
Table'Worktable'.Scancount0,logicalreads7,physical
reads0,read-aheadreads0,loblogicalreads5222,lob
physicalreads0,lobread-aheadreads242.
Table'Employes'.Scancount1,logicalreads87,physical
reads0,read-aheadreads0,loblogicalreads0,lobphysical
reads0,lobread-aheadreads0.
Table'Worktable'.Scancount0,logicalreads7,physical
reads0,read-aheadreads0,loblogicalreads5229,lob
physicalreads0,lobread-aheadreads245.
Table'Employes'.Scancount1,logicalreads87,physical
reads0,read-aheadreads0,loblogicalreads0,lobphysical
reads0,lobread-aheadreads0.
Table'Worktable'.Scancount0,logicalreads7,physical
reads0,read-aheadreads0,loblogicalreads5229,lob
physicalreads0,lobread-aheadreads245.Execution plan:

什么时候使用一个Worktable?
优化器使用一个Worktable的限制究竟在哪呢?这取决于优化器和用来做XML解析的内存和数据大小相关的工作量的大小。在我的查询当中返回的XML被存储在一个大的内存中的XML变量中。上面的限制并不是一个确定的数字。在SQL Server Developer Center 哪里有关人员说:“光是XML的变量和参数相关的内容就可以达到2GB。当值很小的时候他们使用主存作为存储的载体。但是,大的值就要存储在tempdb中。”
结论
XML的数据和功能可能比标准的T-SQL消耗更多的资源。因此,如果当查询涉及到大量的数据或者XML功能更加复杂的时候,最好在数据库级别使用标准的T-SQL。同时也建议大家来测试自己的XML性能,从而确保在数据库中使用XML不会降低系统的性能。
来源:TechTarget 作者:Michelle Gutzait 责编:豆豆技术应用
正在加载评论...
- SQL Server 2008 教程
- SQL Server 2005 教程
- SQL Server 安全设置
- SQL Server 故障解决
- SQL Server 安装配置
- SQL Server 备份恢复
- SQL Server 性能调优
- SQL Server 存储过程
- SQL Server 函数
- SQL Server 事务
- SQL Server 查询
- SQL Server 索引
- SQL Server 入门教程
- SQL Server 数据类型
- SQL Server 数据库表
- SQL Server T-SQL
- SQL Server 语句
- SQL Server 死锁
- SQL Server 加密
- SQL Server 数据库连接
- SQL Server 数据仓库
- SQL Server 数据库管理
- 更多SQL Server 专题>>>