SQL Server 2005中Tempdb变化分析

  tempdb数据库是SQL Server用于临时或者开关操作的数据库。对tempdb所做的很多优化都是在透明的情况下,让处理加速,本文就介绍tempdb对SQL Server 2005的影响以帮助大家利用这些来写出更好的、更先进的SQL Server 2005代码。

  SQL Server 2005版本中的所有变化可以写成一本书,事实上,已经被写成了好几本书。其中,最重要的变化不是功能上的变化;这些变化发生在用户或者管理员无法立刻感觉到的内部的行为上。这就是说,了解到它们是什么,它们在什么状况下会表现出来,将会很有用。

  这些的隐藏起来的性能提升中最好的一个例子就是tempdb数据库——SQL Server用于临时或者开关操作的数据库。对tempdb所做的很多优化都是在透明的情况下,让处理加速:

  ◆当临时表被创建的时候,临时表会被缓存起来加速性能。然而,有一些表明确的不会被缓存:

  ◆关联着显式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代码。

时间: 2025-01-24 06:12:27

SQL Server 2005中Tempdb变化分析的相关文章

SQL Server 2005中如何使用分析服务执行DDL任务

问题: 我们期待在我们的SQL Server分析服务服务器中自动执行任务.请问您能给我们讲解怎样在SSIS中使用分析服务执行DDL任务(Analysis Services Execute DDL Task)的细节吗? 专家解答: 分析服务执行DDL任务(Analysis Services Execute DDL Task)是一个很有用的工具,它可以让你用一个SQL Server分析服务实例做任何事情.例如,你可以备份一个数据库,处理一个数据分析立方体,创建一个分区.利用XML分析(XMLA)来执

SQL Server数据库中tempdb性能分析

SQL Server有四个重要的系统级数据库:master,model,msdb,tempdb. 1.SQL Server系统数据库介绍 SQL Server有四个重要的系统级数据库:master,model,msdb,tempdb. master:记录SQL Server系统的所有系统级信息,包括实例范围的元数据,端点,链接服务器和系统配置设置,还记录其他数据库是否存在以及这些数据问文件的位置等等.如果master不可用,数据库将不能启动. model:用在SQL Server 实例上创建的所

SQL Server 2005 中的批编译、重新编译和计划缓存问题(2)

查询计划缓存及各种 SET 选项(与 showplan 相关及其他) 各种 SET 选项--多数与 showplan 相关--以多种复杂的方式影响着查询计划和执行上下文的编译.缓存和重用.下表汇总了相关的详细信息. 应按如下顺序阅读该表中的内容.批处理通过表中第一列所指定的特定模式提交给 SQL Server.已提交的批处理的计划缓存中可能存在.也可能不存在已缓存的查询计划.第 2 列和第 3 列描述了存在已缓存的查询计划时的情况:第 4 列和第 5 列说明了不存在已缓存的查询计划时的情况.在每

使用 SQL Server 2005中的 CLR 集成

本文描述了数据库应用程序开发人员和架构师如何利用 SQL Server 2005 中的 CLR 集成功能.本文对基于 CLR 的编程方式与 SQL Server 中支持的现有编程模型(如 TransacT-SQL 和扩展存储过程)进行了比较,并且强调了各自相对的优缺点.还提供了一组选择合适的编程替代方法的高级指导,以及一些示例和代码示例. 一.简介 Microsoft 通过宿主 Microsoft .NET Framework 2.0 公共语言运行库 (CLR),SQL Server 2005显

SQL Server 2005 中的批编译、重新编译和计划缓存问题(4)

下面,考虑以下 T-SQL 代码段:-- dbo.someTable will be used to populate a temp table-- subsequently.create table dbo.someTable (a int not null, b int not null)godeclare @i intset @i = 1while (@i <= 2000)begin insert into dbo.someTable values (@i, @i+5) set @i =

SQL Server 2005 中的批编译、重新编译和计划缓存问题(3)

两种特殊情况 与计划最优性相关的重新编译在下列两种特殊情况中的处理方式有所不同. 特殊情况 1:在空表或索引视图上创建的统计 SQL Server 2005 处理下列情况的方式不同于 SQL Server 2000.用户创建了一个空表 T.然后又在 T 一个或多个列上创建了一个统计 S.由于 T 为空,因此统计二进制大对象(直方图)为 NULL,但已经在 T 上创建了统计.假设在查询编译期间已发现 S 是"令人关注的".根据重新编译阈值的"500 行"规则,只有至少

Microsoft SQL Server 2005 中的 XML 选项

本文介绍 Visual Studio 2005/SQL Server 2005 环境中用于处理 XML 数据的三个选项,包括使用方案以及指导用户在各选项之间进行选择的指南. 一.System.Xml.SQLXML 和 XML 数据类型简介 本节简要介绍 Microsoft SQL Server 2000 中提供的 XML 支持的发展历史,并概要介绍 Microsoft Visual Studio 2005/SQL Server 2005 环境中提供的用于处理 XML 和关系数据的三个选项.这三个

浅析SQL Server 2005中的主动式通知机制

[导读]本文中,我想通过一个简单的Windows桌面表单示例(基于SQL Server 2005的范例数据库AdventureWorks)向读者展示SQL Server 2005中这种新的主动地通知工作机理.由于Visual Studio 2005的革命性变化,你可以极为容易地把这个例子更改到Web应用程序场合下. 一.引言 在开发多人同时访问的Web应用程序(其实不只这类程序)时,开发人员往往会在缓存策略的设计上狠下功夫.这是因为,如果将这种环境下不常变更的数据临时存放在应用程序服务器或是用户

SQL Server 2005 中的商务智能和数据仓库(2)

例如,设想一个"客户"维度.关系型源表有八列: • 客户键 • 客户名称 • 年龄 • 性别 • 电子邮件 • 城市 • 地区 • 国家 相应的 Analysis Services 维度应具有七个属性: • 客户(整型键.以"客户名称"作为名称) • 年龄.性别.电子邮件.城市.地区.国家 数据中存在一种自然层次结构,{国家.地区.城市.客户}.出于导航目的,应用程序开发人员可以选择创建第二个层次结构:{年龄.性别}.商务用户并没有看到这两个层次结构行为方式之间有何