参考资料来自:

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使用行版本保证创建索引参考的数据不被改变。

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

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

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

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

转载于:https://www.cnblogs.com/sqlite3/archive/2012/06/07/2567848.html

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

  1. 透明加密tde_如何在SQL Server中监视和管理透明数据加密(TDE)

    透明加密tde Transparent Data Encryption (TDE) was originally introduced in SQL Server 2008 (Enterprise E ...

  2. 在Sql Server 中调用Jmail组件发送邮件

    在Sql Server 中调用Jmail组件发送邮件 预备知识 1.OLE自动化函数 OLE自动化使应用程序能够对另一个应用程序中实现的对象进行操作,或者将对象公开以便可以对其进行操作.自动化客户端是 ...

  3. SQL Server 中4个系统数据库,Master、Model、Msdb、Tempdb

    SQL Server 中4个系统数据库,Master.Model.Msdb.Tempdb master   数据库       master   数据库记录   SQL   Server   系统的所 ...

  4. 第17周翻译:SQL Server中的事务日志管理的阶梯:第5级:在完全恢复模式下管理日志...

    来源:http://www.sqlservercentral.com/articles/Stairway+Series/73785/ 作者:Tony Davis, 2012/01/27 翻译:刘琼滨. ...

  5. SQL Server中如何识别、查找未使用的索引(unused indexes)

    在SQL Server中,索引是优化SQL性能的一大法宝.但是由于各种原因,索引会被当做"银弹"滥用,一方面有些开发人员(甚至是部分数据库管理员)有一些陋习,不管三七二十一,总是根 ...

  6. 十步优化SQL Server中的数据访问

    故事开篇:你和你的团队经过不懈努力,终于使网站成功上线,刚开始时,注册用户较少,网站性能表现不错,但随着注册用户的增多,访问速度开始变慢,一些用户开始发来邮件表示抗议,事情变得越来越糟,为了留住用户, ...

  7. Microsoft SQL Server中的事务(转载)

    1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一组语句要么全部成功,对数据库中的某些数据成功修改; 要么全部不成功,数据 ...

  8. SQL Server中通用数据库角色权限的处理详解

    SQL Server中通用数据库角色权限的处理详解 前言 安全性是所有数据库管理系统的一个重要特征.理解安全性问题是理解数据库管理系统安全性机制的前提. 最近和同事在做数据库权限清理的事情,主要是删除 ...

  9. SQL Server中关于跟踪(Trace)那点事(转载)

    前言 一提到跟踪俩字,很多人想到警匪片中的场景,同样在我们的SQL Server数据库中"跟踪"也是无处不在的,如果我们利用好了跟踪技巧,就可以针对某些特定的场景做定向分析,找出充 ...

最新文章

  1. java gif 帧_在Java中修复动画gif的帧速率
  2. C#做的在线升级小程序
  3. c语言课程设计贴吧,【图片】发几个C语言课程设计源代码(恭喜自己当上技术小吧主)【东华理工大学吧】_百度贴吧...
  4. hdu3074 线段树求区间乘积(单点更新)
  5. 机器人学习--Robotics 4:Perception(宾夕法尼亚大学COURSERA课程)
  6. 【Python】函数递归实例之字符串反转、汉诺塔问题分析
  7. java 企业信息门户 拖拽排版_web中拖拽排序与java后台交互实现
  8. 即时聊天IM之一 XMPP协议简述
  9. 微信小程序Tab选项卡切换大集合
  10. SpringCloud工作笔记034---Zuul配置项中sensitiveHeaders和ignoredHeaders的不同
  11. 智能手机上最没有用的功能是什么?
  12. linux grep的信息不全,Linux下grep显示前后几行信息方法介绍
  13. http缓存与cdn相关技术
  14. JSP实用教程(第三版 清华大学出版社)中遇到的问题和解释
  15. linux搭建windows无盘系统,linux下无盘系统的安装
  16. layui扩展模块的使用注意事项
  17. 知识点梳理:基本矩阵F、本质矩阵E、单应矩阵H
  18. 苹果 iOS 15.5更新了哪些功能 苹果 iOS 15.5值得更新吗
  19. 在laravel中使用wordpress
  20. ribbon整合eureka时报错Request URI does not contain a valid hostname: xxxx

热门文章

  1. Ubuntu 下安装 输入法
  2. Linux操作系统的8个经典技巧
  3. 织梦后台对应的php文件,织梦DedeCMS后台文件列表按文件名排序的方法
  4. JavaWeb中集成UEditor
  5. JSP之内置对象、作用域
  6. arduino绘图_如何使用Arduino构建绘图仪
  7. ota暗室测试_如何将Darktable用作数字暗室
  8. 压缩包加密后门_加密后门:还有更多争论吗?
  9. 开源 非开源_在开源中吃我们自己的狗粮
  10. HTML5 nav元素