开发者社区> 杰克.陈> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

查看SQLSERVER内部数据页面的小插件Internals Viewer

简介: 原文:查看SQLSERVER内部数据页面的小插件Internals Viewer 查看SQLSERVER内部数据页面的小插件Internals Viewer 感觉internals viewer这个名字起得很好,内部查看。
+关注继续查看
原文:查看SQLSERVER内部数据页面的小插件Internals Viewer

查看SQLSERVER内部数据页面的小插件Internals Viewer

感觉internals viewer这个名字起得很好,内部查看。

这个小工具是我之前看园子里的某大侠转载的文章是看到的

文章地址:
SQL Server2008存储结构之堆表、行溢出

http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html

这几天研究了一下这个小工具,发现挺好用的,对入想深入研究或者刚刚学SQLSERVER但是想对SQL有更深入了解的朋友们特别有用


先给出下载地址,这个是codeplex上的一个项目:

http://internalsviewer.codeplex.com/

我也上传到了自己的网盘,大家也可以到我的网盘下载:http://www.kuaipan.cn/file/id_4401224786924003.htm

 InternalsViewerInstaller.msi 安装就不说了,直接双击安装,安装前最好先关闭SSMS

官方上说:可以用在SQL2005 SQL2008  ,我自己的电脑是SQL2005 Windows7可以使用

 

 

下载安装好之后,再打开SSMS,会看到SSMS的菜单增加了一个

 

 点击Internals Viewer会有两个菜单:display transaction logAllocation Map

不知道为什么display transaction log用不了,本人非常想知道display transaction log是什么功能

只好点击“Allocation Map” ,点击之后会弹出 连接对话框,大家选择验证方式连接就可以了不多说了


打开之后会看到如下图

 上面几个按钮

选择要查看的数据库

PFS:查看数据库的空闲页面情况

buffer pool:看下图

small:调整小方格的大小

key:是否显示数据库的表,如果不点击key下面不会显示表的

File Details:看上面那个图


小方格颜色的含义

点击某个小方格就会显示那个小方格的信息,每个小方格代表一个页面

小方格的颜色是跟下面表格的颜色是一一对应的,表示这些表格数据在数据库中的分布情况

 

鼠标在小方格上移动会看到这个小方格属于哪个表

 鼠标左键单击某个小方格会显示这个页面的信息

如果你想看某个表的数据,你可以点击那个表,然后就会显示出那个表的数据分布情况,你点击某个小方格就可以看到那个表的数据了~


先从数据库的开头几个页面说起吧

 

数据库第1页:file header page

数据库第2页:PFS  (Page Free Space) ,也叫页面自由空间,该页面用来跟踪一个文件中每一个特定页面的利用率情况

数据库第3页:GAM 全局分配映射(Global Allocation Map,GAM)页面  这些页面记录了哪些区已经被分配并用作何种用途

数据库第4页:SGAM 共享全局分配映射(Shared Global Allocation Map,SGAM)页面  这些页面记录了哪些区当前被用作混合类型的区,并且这些区需含有至少一个未使用的页面

第5页没有数据

第6页没有数据

数据库第7页:DCM 差异变更(Differential Changed Map,DCM)页面 他跟踪一个文件中的哪一个区在最新一次完整数据库备份之后被修改过。SQLSERVER
用在增量备份时只对已发生数据变更的分区进行增量备份即可

资料:SQL Server 2008 存储结构之DCM、BCM

数据库第8页:BCM 批量更改映射(Bulk Changed Map)页面,该页面当文件中的一个区在最小量或批量日志操作中被
使用时用到。

数据库第9页:sys.sysqnames 存在于每个数据库中。

4 字节 ID 标记的每个命名空间或限定名均存在对应的一行。

像dbcc checkprimaryfile命令的信息应该就存储于这个页面中

数据库第10页:boot page 数据库根据这个页面的信息来启动的

 


IAM页面

下面那里写错了,应该是堆表才有

 


具体页面信息

 每个小方格代表一个页面,左边这些信息估计是使用了这两条语句:DBCC IND()   DBCC PAGE()

 

 

 下方显示对应的表数据

 

左上角显示了这个页面是数据页还是IAM页


数据行的结构

关于数据行的结构,大家可以看文章最开始给出的

文章地址: SQL Server2008存储结构之堆表、行溢出

http://www.cnblogs.com/trams/archive/2010/09/11/1823727.html

我摘抄一部分

其中状态A为如下说明:
 
  bit0:版本信息,在SQL Server 2005/08总是为0
 
  bit1-3: 0=(primary record);1=(forwarded record);2=(forwarding stud);3=(index record);4=(溢出数据);5=(ghost索引记录);6=(ghost数据记录)
 
  bit4:表示存在NULL位图(在数据行里SQL2005/08总存在NULL位图)
 
  bit5:表示存在变长列
 
  bit6:未启用
 
  bit7:表示存在幽灵记录
 
  本例中30->00110000 它是一个行属性的位图 从高位存到低位(右边第一位是bit0),bit4为1即存在变长列的字段,因为在SQLServer2005/2008中总存在NULL位图,所以bit5也为1。
 
  状态位B在SQLServer2005//2008中未启用,所以为00


IAM页和数据页的差别

堆表只依靠表里的IAM页(索引分配映射页)将堆的页面联系在一起,IAM里记录了页面编号,页面位置

红色的小方格就是记录了sys.syscolpars这张表他的数据页面在数据库中的分布情况


关于这个软件

我点击了一下IAM页面下方的小方格就报错了,然后弹出一个对话框,原来这个软件使用.NET来编写的

我们国人什么时候也能够写一个呢?

 

----------------------------------------------------------------------------------------------------

最后附上各个系统页面的作用和详细介绍地址

PFS页面介绍:  http://dev.21tx.com/2011/11/24/11378.html
DCM BCM页面介绍:  http://tech.it168.com/a2010/0921/1106/000001106857.shtml
GAM SGAM页面介绍:http://www.efficient-it.com.cn/space/78/viewspace/itemid/6756.html

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
sqlserver:两列数据相除,保留小数点后2位
sqlserver:两列数据相除,保留小数点后2位
0 0
tp读取sqlserver数据库一个表的时候一个字段类型是text,数据有空格读取出的数据有乱码解决方案...
$sql="SELECT *, REPLACE(CONVERT(varchar(500), GoodsInfo), CHAR(32), ' ') AS GoodsInfo FROM tDelivery WHERE (DeliveryID = '$DeliveryID')"; GoodsInfo这字段是text类型的,不支持REPLACE函数,所以先用CONVERT把这个字段强行转化成varchar500,然后再用REPLACE 把字段里面的空格 CHAR(32)替换成空就ok了!
0 0
sqlserver数据库查询某个字段 为null的所有行数据
sqlserver数据库查询某个字段 为null的所有行数据
0 0
sqlserver导出带数据的脚本文件(下)
sqlserver导出带数据的脚本文件(下)
0 0
sqlserver导出带数据的脚本文件(上)
sqlserver导出带数据的脚本文件(上)
0 0
如何将数据从SQLServer同步至AnalyticDB for PostgreSQL
使用DTS,进行Sqlserver -> AnalyticDB for PostgreSQL 数据链路同步,可以很方便的将SQLServer中的分散的业务数据批量/实时导入至AnalyticDB for PostgreSQL, 进行复杂的OLAP查询与分析
1888 0
SQLServer CDC数据通过Kafka connect实时同步至分析型数据库 AnalyticDB For PostgreSQL及OSS
本文主要介绍如何通过消息对接, kafkakafka-connect数据平台以及相关插件将数据同步到分析型数据库 AnalyticDB PostgreSQL
3868 0
SQLServer之列数据转换为行数据
SQLServer之列数据转换为行数据UNPIVOT特点UNPIVOT运算符通过将列旋转到行来执行PIVOT的反向操作,UNPIVOT 并不完全是 PIVOT 的逆操作。 PIVOT 执行聚合,并将多个可能的行合并为输出中的一行。
816 0
多台SQLServer数据实时同步,syncnavigator使用
最近一直在研究数据库同步的问题,在网上查了很多资料,也请教了很多人,找到了一种通过快照复制的方法。研究了一番后发现之前就是用的这个方法,效果不是很好,果断放弃。经过了一番寻觅和他人指点,最后从一位热心网友那里得知一款很好用的软件—— SyncNavigator。
8893 0
SqlServer执行Insert命令同时判断目标表中是否存在目标数据
原文:SqlServer执行Insert命令同时判断目标表中是否存在目标数据 针对于已查询出数据结果, 且在程序中执行Sql命令, 而非数据库中的存储过程 INSERT INTO TableName (Column1, Column2, Column3, Column4, Column5)SELE...
910 0
+关注
杰克.陈
一个安静的程序猿~
文章
问答
文章排行榜
最热
最新
相关电子书
更多
SQL Server 2017
立即下载
PostgresChina2018_董红禹_SQL_Server迁移PG经验分享
立即下载
SQL Server在电子商务中的应用与实践
立即下载