SQL Server2005隐藏起来的性能提升?高手能不能给介绍一下。
解决方案 »
- with查询后的结果集怎么取出来?
- innerjoin(内连) 和 left outer join(左外连)区别与 一个小问题
- 怎样将'0345672',按从小到大的次序排好,排成'0234567'
- 求一查询语句
- 如何得到一个库中的全部表名称?
- 请问连接远程sql服务器,返回错误信息:Connection reset,怎么回事?
- 使用BULK INSERT导入数据到数据库,出现PRIMARY KEY约束错误
- 如何取得Sqlserver的安装目录?(是不是搜索注册表?)
- 各位大虾帮忙
- 如何将SQL Server2000数据导入Oracle8i中
- 内连续上班等于或大于4天的员工
- 问一道关于Sql问题。
◆关联着显式DDL的临时表
◆关联着命名的约束的临时表
◆作为动态产生的SQL语句的一部分的临时表——例如,存储过程sp_executeSQL的环境中
◆工作表的缓存得到提升。为了节约了空间,会被反复执行的执行计划中的工作表被截短了;现在只有工作表中的前九个页面才会保留。
◆很多其他类型的临时对象也被缓存以提高速度:当在存储过程、函数或者触发器中使用时,表值函数,表变量和局部临时表都会被缓存。对于某种特定的临时对象的编目条目不会被立即丢弃,而是缓存以备将来的重用(一段时间之后,最少使用的对象将从缓存中清除)。
◆对于tempdb中记录的一些修改将不再被记录到日志中,这样可以降低tempdb产生的日志和设备的I/O流量。INSERT操作只会记录插入的记录,DELETE操作只会记录被删除的记录。只有UPDATE操作才会同时记录原值和更新之后的值。(根据Microsoft的内部资料,在此之前的版本,三种操作都会记录操作之前的值和操作之后的值)
◆重新设计tempdb的文件被均衡写入的方式,减少对系统资源的竞争。均衡写入意味着每一个tempdb文件(假设存在多个文件)会被同时写入。因此,如果每个物理文件分散到不同的磁头上,那么对这些文件的写入可以更加有效率的并行处理。建议你为一个SQL Server在每一个CPU创建一个临时文件,并且将每个临时文件放在不同的磁头上。
◆如果一个临时表从tempdb中被丢弃,它会在后台进行处理以降低主机程序的等待时间。实际上,它会被立即处理。 不仅仅是性能,一些变化也影响到了SQL Server 2005的统计收集操作: ◆SQL Server 2005的动态管理视图(Dynamic Management Views)报告关于tempdb空间使用情况的统计数据,可以通过查询检索到这些数据。例如,SELECT SUM (unallocated_extent_page_count)*8 as [Free Space] FROM sys.dm_db_file_space_usage会返回tempdb文件中以kilobytes计算的自由空间总数。
◆Trace标志TF-1118(表示分配整个的extents给每个tempdb对象)已经被重新改造,减少资源的竞争。你可以用它作trace检查而不用担心对tempdb性能产生影响。
◆两个新的性能指标,临时表新建率(Temp Tables Creation Rate)和临时表销毁计数(Temp Tables for Destruction),在SQL Server 2005中出现。它们分别指示每秒钟新建多少个临时表和多少个临时表在排队销毁。 这些变化可以让程序员对tempdb实际的运行方式有一些洞察,而不是被它表面上的行为所蒙蔽——毫无疑问,一个创新的程序员可以利用这些来写出更好的、更先进的SQL Server 2005代码。 1