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

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

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

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

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

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

  1. 第十七周翻译-SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志

    SQL Server中事务日志管理的阶梯,级别5:以完全恢复模式管理日志 作者:Tony Davis,2012/01/27 翻译:赖慧芳 译文: 该系列   本文是Stairway系列的一部分:SQL ...

  2. SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志(译)

    SQL Server中事务日志管理的步骤,第5级:完全恢复模式管理日志 作者:Tony Davis,2012/01/27 系列 本文是进阶系列的一部分:SQL Server中事务日志管理的步骤 当事情 ...

  3. c#Winform程序调用app.config文件配置数据库连接字符串 SQL Server文章目录 浅谈SQL Server中统计对于查询的影响 有关索引的DMV SQL Server中的执行引擎入门 【译】表变量和临时表的比较 对于表列数据类型选择的一点思考 SQL Server复制入门(一)----复制简介 操作系统中的进程与线程

    c#Winform程序调用app.config文件配置数据库连接字符串 你新建winform项目的时候,会有一个app.config的配置文件,写在里面的<connectionStrings n ...

  4. 《SQL Server企业级平台管理实践》读书笔记——SQL Server中关于系统库Tempdb总结

    Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...

  5. SQL Server中tempdb的管理

    原文:SQL Server中tempdb的管理 资料来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/ ht ...

  6. SQL Server中TempDB管理(version store的逻辑结构)

    原文:SQL Server中TempDB管理(version store的逻辑结构) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/arch ...

  7. SQL Server中TempDB管理(版本存储区的一个example)

    原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...

  8. SQL Server 中关于系统库Tempdb总结

    Tempdb系统数据库是一个全局资源,可供连接到SQL Server实例的所有用户使用. 存储的内容项: 1.用户对象 用户对象由用户显示创建.这些对象可以位于用户会话的作用域中,也可以位于创建对象所 ...

  9. SQL Server中tempdb的management

    对<SQL Server中tempdb的management>的一些更正和补充   对<SQL Server中tempdb的management>的一些更正和补充 前几天看了这 ...

随机推荐

  1. JavaWeb学习总结(一)JavaWeb开发入门

    静态网页和动态网页 静态网页:在服务器上没有经过服务器解释执行的网页. 动态网页:在服务器上经过服务器解释执行的网页. 无论是静态网页还是动态网页,客户端看到的网页都是由HTML所构成的,所以Java ...

  2. C#区域截图——调用API截图

    原文:C#区域截图——调用API截图 前言:截图对于一个C++开发者来说无非是小菜一碟,也有朋友使用C#的 Graphics.CopyFromScreen 方法屏幕操作,作为一名整天想着用 C++ 开 ...

  3. cocos2d-x2.2.3和android平台环境的搭建

    准备工作:1.我只是将cocos2d-x移植到android平台,所以默认为大家已经将android平台搭建完成了(eclipse和android SDK已经配置好,java环境搭建好) 2.下载an ...

  4. Android SDK 5.0 这个语句带来折腾 - 生命在于折腾!

    Android SDK 5.0  带来的这番折腾 - 生命在于折腾! 太阳火神的漂亮人生 (http://blog.csdn.net/opengl_es) 本文遵循"署名-非商业用途-保持一 ...

  5. sql语句用'in'执行多条语句时候,执行错误的解决方法

    一般报错是出现,无法将nvarchar类型转换为int类型 这是因为 SqlParameter  带参数  是不能用  , 分割的. 第一种解决方法就是  不用 SqlParameter  带参数的s ...

  6. DLNA它 Error, can&#39;t findlibavformat ! 解

    DLNA库版本号为libdlna-0.2.4 运行./configure出错: ------------------------------ Error, can't findlibavformat ...

  7. ExternalInterface的简单使用方法

    ExternalInterface的简单使用方法 使用ExternalInterface调用JavaScript方法-无返回值flex代码------------------<mx:Button ...

  8. Android自己定义组件系列【5】——高级实践(1)

    在接下来的几篇文章将任老师的博文<您可以下拉PinnedHeaderExpandableListView实现>骤来具体实现.来学习一下大神的代码并记录一下. 原文出处:http://blo ...

  9. height:100%失败

    height显然,设置100% 为什么不能看到效果.非常多的时间不是很扎实的时间的基础上,,经常会遇到这样的问题,原因很简单的事实 首先,你必须确保 html{height:100%;} body{h ...

  10. Aix db2 经user a using b连接时报SQL30082N Security processing failed with reason &quot;42&quot;

    db2inst1登录 输入实例文件夹:/opt/ibm/db2/V9.7/instance 关闭实例:db2stop 更新示例:./db2iupdt db2inst1 启动实例:db2start 再次 ...