SQL Server中TempDB管理(version store的逻辑结构)
原文:SQL Server中TempDB管理(version store的逻辑结构)
原文来自:
http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/
前面几篇博文已经初步介绍了版本存储区,现在我们来了解一下它的逻辑结构,看看它究竟是如何储存不同结构的表格和索引行的。其实我们只要看一下DMV
sys.dm_tran_version_store这个DMV就够了.
这个DVM视图显示了版本存储区全部逻辑结构。有两点值得注意。第一,版本存储区也和数据页面索引页面一样由8k大小的页组成。这些页存在缓冲池中,可以在TempDB面临内存压力时被写入磁盘。第二,版本存储区存储的是完整的二进制文件,就像在数据页存储的一样。这种二进制文件分为前后两个部分,然后在SQL
Server内部会对其进行组合。这使得行版本存储独立于它所属的对象的架构,即一个储存区的页可以存储来自不同表不同索引的行,甚至可能来自同一实例下的不同数据库。换句话说,版本存储区是一个SQL
Server实例下公用的。和数据页和索引页一样,在内存紧张的时候版本存储页也会从缓冲池中被清除。
如果查看名为sys.dm_tran_version_store的DMV会发现,我们会发现版本行有很多原始数据或索引页面所没有的的新属性,如database-id,行长度等。您可能会问,行版本同样受到SQL
Server最大行长度8060的限制,那么它是如何存储原始数据行(最大行长度也是8060)并增长新属性的呢。答案是,数据行在版本存储页实际上被分成了2行,只是在DMV视图中表现成一大行。
下面是一个版本存储的例子。事务57已经更新了三个不同的行,同时事务58只更新1行内容。请注意,如果一个事务中多次更新同一行,只会创建一个行版本,因为对其他事务来说,它从一开始就持有了X锁。
transaction_sequence_num
version_sequence_num database_id
------------------------
-------------------- -----------
57 1 9
57 2 9
57 3 9
58 1 9
rowset_id status min_length_in_bytes
--------------------
------ -------------------
72057594038321152 0
12
72057594038321152 0
12
72057594038321152 0
12
72057594038386688 0
16
record_length_first_part_in_bytes
---------------------------------
29
29
29
33
record_image_first_part
--------------------------------------------------------------------
0x50000C0073000000010000000200FCB000000001000000270000000000
0x50000C0073000000020000000200FCB000000001000100270000000000
0x50000C0073000000030000000200FCB000000001000200270000000000
0x500010000100000002000000030000000300F800000000000000002E0000000000
record_length_second_part_in_bytes record_image_second_part
----------------------------------
----------------------
0 NULL
0 NULL
0 NULL
0 NULL
SQL Server中TempDB管理(version store的逻辑结构)的更多相关文章
- SQL Server中TempDB管理(版本存储区的一个example)
原文:SQL Server中TempDB管理(版本存储区的一个example) 原文来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive ...
- SQL Server中tempdb的管理
原文:SQL Server中tempdb的管理 资料来自: http://blogs.msdn.com/b/sqlserverstorageengine/archive/tags/tempdb/ ht ...
- SQL Server中tempdb的management
对<SQL Server中tempdb的management>的一些更正和补充 对<SQL Server中tempdb的management>的一些更正和补充 前几天看了这 ...
- 对《SQL Server中tempdb的management》的一些更正和补充
对<SQL Server中tempdb的management>的一些更正和补充 前几天看了这篇文章:SQL Server中tempdb的management 发现里面有些内容不是很准确 文 ...
- 转载 SQL Server中索引管理之六大铁律
转载原地址 http://jingyan.baidu.com/article/48a42057c03bd7a924250429.html 索引是以表列为基础的数据库对象.索引中保存着表中排序的索引列, ...
- [转]如何监测谁用了SQL Server的Tempdb空间
Tempdb 系统数据库是一个全局资源,供连接到 SQL Server 实例的所有用户使用.在现在的SQL Server里,其使用频率可能会超过用户的想象.如果Tempdb空间耗尽,许多操作将不能完成 ...
- Microsoft SQL Server中的事务与并发详解
本篇索引: 1.事务 2.锁定和阻塞 3.隔离级别 4.死锁 一.事务 1.1 事务的概念 事务是作为单个工作单元而执行的一系列操作,比如查询和修改数据等. 事务是数据库并发控制的基本单位,一条或者一 ...
- SQL Server中的TempDB管理——TempDB基本知识(为什么需要版本存储区)
原文:SQL Server中的TempDB管理--TempDB基本知识(为什么需要版本存储区) 参考资料来自: http://blogs.msdn.com/b/sqlserverstorageengi ...
- SQL Server 中如何移动tempdb到新的位置
操作步骤:1.检查tempdb的逻辑名字和它的存在位置.可以使用下面语句: SELECT name, physical_name FROM sys.master_files WHERE databas ...
随机推荐
- JS验证姓名、邮箱、电话号码
<SCRIPTtype="text/javascript"> varredflag=0; //姓名验证 functionisName(){ varname=$('#na ...
- JAVA insert() 插入字符串 reverse() 颠倒 delete()和deleteCharAt() 删除字符 replace() 替换 substring() 截取子串
insert() 插入字符串 StringBuffer insert(int index,String str) StringBuffer insert(int index,char ch) Stri ...
- JavaScript采用append添加的元素错误
1.错误叙述性说明 于IE览器上: Uncaught HierarchyRequestError:Failed to excute 'appendChild' on 'Node':The new ch ...
- 基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写
基于JAVA WEB技术旅游服务网站系统设计与实现网上程序代写 专业程序代写服务(QQ:928900200) 随着社会的进步.服务行业的服务水平不断发展与提高,宾馆.酒店.旅游等服务行业的信息量和工作 ...
- cocos3——8.实现初学者指南
1.采用ClippingNode裁剪范围 写作物接口: function createClipNode(node, stencil, inverted) { var clip_node = new c ...
- DB2 “The transaction log for the database is full” 存在的问题及解决方案
DB2在执行一个大的insert/update操作的时候报"The transaction log for the database is full.. "错误,查了一下文档是DB ...
- 转载:Raspberry Pi 树莓派入门
转载说明: 整理转载,原文链接http://www.eeboard.com/bbs/thread-5191-1-1.html 这篇帖子我打算用Q&A的方式来编写,这样大家更容易一目了然的看明整 ...
- Windows Phone 8 - 建立App专属联络人资讯(ContactStore)
原文:Windows Phone 8 - 建立App专属联络人资讯(ContactStore) 在WP7的时候介绍了如何操作联络人的功能,例如:<Windows Phone 7 - 存取联络人与 ...
- eclipse-jee 配置tomcat7,解决404错误
在eclipse的Servers窗口新建一个tomcat7,配置tomcat的安装路径,然后启动tomcat,访问http://localhost:8080/,但是报404错误,恼火!没有找到要访问的 ...
- J2SE基础:7.系统经常使用类一
1.Object对象 Object对象是全部对象的根类. 每一个对象都默认继承自Object类. equals():对象与对象之间是否相等. 逻辑上面的相等.equals 物理上面的相等(地址相等) ...