`
sjk2013
  • 浏览: 2185537 次
文章分类
社区版块
存档分类
最新评论

SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)

 
阅读更多

参考资料来自:

http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/

http://blogs.msdn.com/b/sqlserverstorageengine/archive/2008/12/22/managing-tempdb-in-sql-server-tempdb-basics-verison-store.aspx

从SQLServer2005开始引入了版本存储区,用于存储不同版本的数据和索引行。行版本通常是旧的数据或索引行的副本,用来实现现有的触发器以及基于快照的隔离级别、MARS和在线索引创建等SQL Server2005新功能。下面让我们看一下这些功能是如何使用行版本的:

l触发器:触发器对被删除和被插入的行进行操作,这是原表的DML操作的一部分。SQL Server2005之前,触发器通过遍历撤消/重做日志逻辑构造这些行。因为SQL Server需要遍历的旧的记录,这会导致磁盘头来回移动,从而损害的日志所在磁盘的IO吞吐量。通常事务回滚并不常见,日志所在磁盘一般都是有顺序地写入。如果应用程序大量使用触发器就有可能导致日志磁盘上的IO瓶颈。自SQL Server 2005开始,触发器改为使用行版本。于是被删除的和被插入的行将使用行版本,这些行的句柄将附加到该事务中。使用行版本避免了SQL Server遍历日志,从而减小了日志磁盘压力,但同时行版本增加了TempDB的使用量。

l在线索引:索引可以在线创建,但创建的同时行的数据可能会发生改变。SQL Server使用行版本保证创建索引参考的数据不被改变。

lMARS:MARS全称为Multiple Active Result Sets(多个活动结果集)。SQL Server通过行版本实现它。这是一个较为复杂的功能。概括的说就是因为MARS允许同一事务内的多个语句在同一时间处于活动状态,SQL Server就必须使用行版本控制来提供语句级别的一致性。

l快照隔离级别和使用行版本控制的已提交读隔离级别:行版本是实现这些新隔离级别的基础。SQL Server创建已修改的行版本,使这些隔离级别下运行的事务不会读到脏数据。

以上这些功能除了触发器之外都是SQL Server2005的新功能,而升级到SQL Server2005版本后触发器也开始使用行版本了,效果比之前要好。SQL Server能够较好地监视和解决版本存储区问题。

接下来的博文中将讨论版本存储区中存储,数据遍历和垃圾数据处理等详细内容。

分享到:
评论

相关推荐

    SqlServer数据库提示 “tempdb” 的日志已满 问题解决方案

    执行sql 语句,中间没有用到临时表 提示服务器: 消息 9002,级别 17,状态 2,行 1 数据库 'tempdb' 的日志已满。请备份该数据库的事务日志以释放一些日志空间。 网上找了下解决方案,大体是扩大临时库的日志文件...

    关于SqlServer2000数据库中tempdb.mdf的迁移

    关于SqlServer2000数据库中tempdb.mdf的迁移

    SQL Server 2016 TempDb里的显著提升

    几个星期前,SQL Server 2016的最新CTP版本已经发布了:CTP 2.4(目前已经是CTP 3.0)。关于SQL Server 2016 CTP2.3 的关键特性总结,在此不多说了,具体内容请查相关资料。这个预览版相比以前的CTP包含了很多不同的...

    SQL Server 2008管理员必备指南(超高清PDF)Part3

    这种分类方法不仅从理论上环环相扣,全面介绍数据库管理人员需要掌握的相关理论知识和工作技能,也从不同层次上体现了数据库管理员的工作内容及工作的要点和难点,能够科学地指导数据库管理员的日常工作。《SQL ...

    数据库编程期末答疑,卷子讲解,SQL server相关操作讲解,如有侵权请联系删除

    如下是一个简化的员工考勤应用E-R图,请在SQL Server中创建名为YQKG的数据库,包括两个数据文件,一个日志文件,文件名按SQL Server对象命名规范定义,数据文件按10%的比例增长,数据库定义完成后输入如下样本数据。...

    SQL Server 2008管理员必备指南(超高清PDF)Part1

    这种分类方法不仅从理论上环环相扣,全面介绍数据库管理人员需要掌握的相关理论知识和工作技能,也从不同层次上体现了数据库管理员的工作内容及工作的要点和难点,能够科学地指导数据库管理员的日常工作。《SQL ...

    SQL Server 2008管理员必备指南(超高清PDF)Part2

    这种分类方法不仅从理论上环环相扣,全面介绍数据库管理人员需要掌握的相关理论知识和工作技能,也从不同层次上体现了数据库管理员的工作内容及工作的要点和难点,能够科学地指导数据库管理员的日常工作。《SQL ...

    2009 年度十大 SQL Server 技巧文章

    SQL Server 2008中最新的文件流功能使得你可以配制一个数据类型为varbinary(max)的列,以便将实际数据存储在文件系统中,而非在数据库中。只要愿意,你仍可以作为一个常规的二进制列来查询此列,即使数据自身存储...

    SQL Server数据库技术大全 电子书

    1.6.4 系统数据库tempdb——临时工作区/26 1.7 示例数据库/27 1.7.1 安装示例数据库/27 1.7.2 示例数据库AdventureWorks/29 1.7.3 示例数据库AdventureWorksDW/30 1.8 小结/30 第2章 T-SQL基础/31 2.1 T-SQL简介/31 ...

    SQL.Server.2008管理员必备指南.part2.rar(2/4)

     《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!  这本实用指南讲述了SQL Server 2008日常管理的工作。使用快速参考表、指令和列表聚焦核心的支持与维护任务。无论您是学生还是数据库...

    Microsoft SQL Server 2005技术内幕: T-SQ程序设计.pdf

    该书解释并比较了SQL Server 2000和SQL Server 2005在数据库开发相关问题上的解决方案,深入讨论了SQL Server 2005中新增的T-SQL编程特性,包含了大量的代码示例、表示例和逻辑难题以帮助数据库开发人员和管理员理解...

    SQL Server 最佳实践分析器 [免费版]

    Best Practices Analyzer Tool for Microsoft SQL Server 2000是Microsoft SQL Server开发团队开发的一个数据库管理工具,可以让你检测设计的数据库是否遵循SQL Server操作和管理的最佳实践准则。这些准则公认有助于...

    更改SQL Server 2005数据库中tempdb位置的方法

    了解SQL Server 2005数据库的朋友可能都知道,tempdb系统数据库是一个全局资源,可供连接到SQL Server 2005实例的所有用户使用。我们有时候为了操作方便,常常会更改一下tempdb数据库的位置,那么该如何操作呢?本文...

    SQL.Server.2008管理员必备指南.part1.rar(1/4)

     《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!  这本实用指南讲述了SQL Server 2008日常管理的工作。使用快速参考表、指令和列表聚焦核心的支持与维护任务。无论您是学生还是数据库...

    谈谈Tempdb对SQL Server性能优化有何影响

    tempdb是SQLServer的系统数据库一直都是SQLServer的重要组成部分,用来存储临时对象。可以简单理解tempdb是SQLServer的速写板。应用程序与数据库都可以使用tempdb作为临时的数据存储区。一个实例的所有用户都共享一...

    浅谈SQL Server 2016里TempDb的进步

    tempdb:是连接到 SQL Server 实例的所有用户都可用的全局资源,它保存所有临时表,临时工作表,临时存储过程,临时存储大的类型,中间结果集,表变量和游标等。另外,它还用来满足所有其他临时存储要求.

    SQL.Server.2008管理员必备指南.part4.rar(4/4)

     《SQL Server 2008管理员必备指南》教你全面掌握SQL Server 2008的必备指南!  这本实用指南讲述了SQL Server 2008日常管理的工作。使用快速参考表、指令和列表聚焦核心的支持与维护任务。无论您是学生还是数据库...

    如何查看SQLSERVER中某个查询用了多少TempDB空间

    每一个查询在开始时都会由SQL Server预估需要多少内存,在具体的执行过程中,如果授予的内存不足,则需要将多出来的部分由TempDB处理,这也就是所谓的Spill to TempDB。  通过下述语句可以观察到某个查询对TempDB...

Global site tag (gtag.js) - Google Analytics