常用命令,Server内情之数据页

图片 7
数据库

数据页是含有已增添到数据库表中的客户数据的布局。

《Microsoft Sql server 贰零壹零 Internals》索引目录:


如前所述, 数据页有三种, 每种都是差异的格式存款和储蓄数据。

《Microsoft Sql server 二零零六Internal》读书笔记–目录索引

–1 DBCC FLUSHPROCINDB

SQL server 有行内数据页、行溢出数据页和 LOB 数据页。

 

毁灭SQL SERVEPRADO服务器内部存款和储蓄器中某些数据库的仓库储存进程缓存内容
用法 DBCC FLUSHPROCINDB(db_id)

与 SQL server 中的全体其余类其他页同样, 数据页的轻重缓急固定为 8 KB
或8192字节。

 

 

它们由三至关首要组件组成: 页面页眉、数据行和行偏移量数组, 如图6-4 所示。

上篇大家根本学习了元数据(metadata)的仓库储存及利用目录视图来查询那一个消息,今日,大家接二连三读书数据页(Data
Pages)。


图片 1

 数据页(Data
pages)是满含已经增添到数据库的表中的顾客数据的构造。正如前方所看见的,数据页有三类,每类数据页以不一致的主意存款和储蓄数据。复习一下,分别是in-row
data pages、row-overflow data pages和LOB data
pages。与任何项目标page同样,data pages也是原则性的8K高低或8192
bytes。它由三类组件组成:the page Header,data rows和the row offset
array,如下图所示:

–2 DBCC page

 

图片 2

dbcc traceon(3604)

页标题

1、Page Header

dbcc page(northwind,1,100,1)

 

正如上海体育场合所示,各样data page (除去96 bytes,还会有8096 bytes存放data,row
overhead和row offset)。你能够动用上面包车型大巴DBCC Page命令来查阅。

/*询问northwind 的数指标第101个页面的新闻*/

如图6-4 所示, 页标题占据每一个数据页的前玖拾捌个字节
(为多少、行费用和行偏移保留80一百个字节)。表6-5
列出了检讨页标题时呈现的某些音信。

2、Data Rows for in-Rows

/*DBCC Page ({dbid|dbname},filenum,pagenum[,printopt])

图片 3

 Page Header的底下是row data,单个数据行最大能够贮存8060 bytes的in-row
data,那正是先前数据行不能够超越8060范围的原由!某个行也能够在单独的页面(pages)中寄放row-overflow
data和LOB数据,存款和储蓄在一个加以的page变量中的行数决定于表结构及数据被存放在的结构。多个具备一切固定长度列的表每页能积累雷同的行数。叁个全体可变长度列的表在页中存放分裂的行数以适应数据的实际上尺寸。保持行长度尽量短,允许越来越多的行以适应页面,减弱了I/O,修正了高速缓存命中率(cache-hit
ratio)。

?

 

就此,作为系统架构师或数据库Designer,实在有要求领会那些啊。邀月深有心得。呵呵。程序很烂,是后天的,但数据结构不成立,这是纯天然的,两个的杀伤力相通惊人!

切切实实参数描述如下:

行内数据的数据行

3、Row Offset Array

dbid: 饱含页面包车型客车数据库ID

 

行偏移数组(row offset array) 是叁个2-byte
entries的块(block),每种项表明对应数据行在页早先的挥动,每行(row)有三个两字节的项。即使这么些字节不会和数据一齐存款和储蓄在行中,它们能影响适应page的行数。行偏移数组透露了行在页上的逻辑顺序。例如,若是多少个表有叁个聚焦索引,SQL
Server按集中索引键的各种寄存数据。那并不代表数据是概略按聚焦索引键的逐个贮存,而是行偏移数组的Slot
0 指向集中索引键种类的率先行(row),Slot 1
指向第二行,等等。当大家要火速查看实际页的时候,那个行的物理地点也许在页的其它岗位。

dbname:包涵页面包车型大巴数据库的名目

页标题后边是积累表实际数据行的区域。单个数据行的最大尺寸为8060字节的行内数据。

 检查数据页(Exampling Data
Pages)

filenum:包罗页面包车型地铁文本编号

行还能够在独立的页上存款和储蓄行溢出和 LOB 数据。

 DBCC
page命令能够帮大家查询:MSDN文书档案中中绝非提供此命令,微软真的很丰裕啊。语法为:

pagenum:文件内的页面

在给定页上囤积的行数依据表结谈判存款和储蓄的数量而生成。

DBCC PAGE ({dbid | dbname},filenum,pagenum[,printopt])

printopt:可选的出口选项;选拔在那之中三个值:

享有全体固定长度列的表始终能够储存每页相仿的行数;

里头,最终一个参数可以是0,1,2,3,默以为0,有意思味的意中人能够相比较下那些参数的界别。大家作个示例:

0:暗中同意值,输出缓冲区的标题和页面标题

可变长度行能够依据输入数据的骨子里尺寸, 存储尽或许多的行。

DBCC traceON(3604)
go
–查询testdb数据库的率先个公文的第157页的数据页
DBCC PAGE (testdb,1,157,1);
GO

1:输出缓冲区的标题、页面标题(分别出口每黄金时代行),甚至行偏移量表

保持行长更加短能够使越来越多行切合页面, 进而收缩 i/o
并追加所需数据在缓存中的恐怕。

查询结果如下:

2:输出缓冲区的标题、页面标题(全体出口页面),以及行偏移量表

 

图片 4

3:输出缓冲区的标题、页面标题(分别出口每大器晚成行),甚至行偏移量表;每意气风发行后跟分别列出的它的列值

行偏移量数组

图片 5

*/

 

其余,还会有更详尽的第X到第X行的数码浮现。更加的多音信,请查看:


行偏移量数组是2字节项的块, 各类条约表示相应数据行领头的页面上的偏移量。

 http://support.microsoft.com/?scid=kb%3Ben-us%3B83065&x=15&y=13http://blogs.msdn.com/sqlserverstorageengine/archive/2006/12/13/More-undocumented-fun\_3A00\_-DBCC-IND\_2C00\_-DBCC-PAGE\_2C00\_-and-off\_2D00\_row-columns.aspx

–3 DBCC checkalloc

每行在此个数组中都有多个2字节的条目款项 (正如前边所探讨的,
当您读书每行所需的12个开拓字节时)。

 http://support.microsoft.com/?scid=kb%3Ben-us%3B83065&x=8&y=12

DBCC checkalloc(northwind)

即使如此那么些字节未有存款和储蓄在数量行中, 但它们确实会影响契合页面包车型大巴行数。

询问结果分为四片段:BUFFER、PAGE HEADER、DATA、和OFFSET
TABLE
(即真实的offset array) ,

/*反省钦定数据库的系统表内和表间的大器晚成致性

 

 
注意,要想博得相近上海体育场面的查询的精心音信,不能不接受展开TRA总老总N开关,语法为:

checkalloc是检查钦定数据库,看其全体科学分配的页和还未有分配的页的情状。

行偏移量数组提示页上行的逻辑顺序。

DBCC traceON(3604)
GO

若未钦命数据库名,则checkalloc检查当前数据库。checkalloc会回去已分配的和动用的空间数据。

举例, 假使表具备聚焦索引, SQL server 将按集中索引键的顺序存款和储蓄这个行。

至于DBCC TRACEON (Transact-SQL)的越来越多用法,请参见MSDN

checkalloc的缺省情势为nofix,要运用fix选项,必得把数据库置于单顾客情势。

那并不意味行按聚焦索引键的生机勃勃一物理地蕴藏在页面上。

举例说您想获知系统硬件的相关新闻,能够透过DBCC
traceON(3205)张开追踪按键。
 

*/

反而, 偏移量数组中的插槽0引用集中索引键顺序中的第大器晚成行, 插槽1引用第二行,
依此类推。

 数据行的组织(the structure of data rows)
叁个表的通用结构如下图所示:


正如您在自己商量其实页面时所看见的那么,
那一个行的情理地方能够放在页面包车型大巴此外岗位。

 图片 6

–4 DBCC checkcatalog

 

 在那之中:状态位A富含叁个有关行的位图消息。那一个bits宛如下含义:

DBCC checkcatalog(northwind)/*

查阅数据页

      Bit 0 Versioning information; in SQL Server 2008, it’s always 0.
      Bits 1 through 3 Taken as a 3-bit value, 0 indicates a primary record, 1 indicates a forwarded record, 2 indicates a forwarded stub, 3 indicates an index record, 4 indicates a blob fragment, 5 indicates a ghost index record, and 6 indicates a ghost data record.
      Bit 4 Indicates that a NULL bitmap exists; in SQL Server 2008, a NULL bitmap is always present, even if no NULLs are allowed in any column.
      Bit 5 Indicates that variable-length columns exist in the row.
      Bits 6 Indicates that the row contains versionings information.
      Bits 7 Not used in SQL Server 2008.

检查批定数据库的连串表内和体系表间的后生可畏致性

 

状态位B字段中只使用一位,表示该记录是一条备份转发记录。

*/

能够动用 DBCC 页命令查看数据页的剧情, 

下表显示了表数据行的囤积新闻:


那允许你查看数据库中别的给定页的页标题、数据行和行偏移表。

Information

Mnemonic

Size

Status Bits A

TagA

1 byte

Status Bits B (not used in SQL Server 2008)

TagB

1 byte

Fixed-length size

Fsize

2 bytes

Fixed-length data

Fdata

Fsize –4

Number of columns

Ncol

2 bytes

NULL bitmap(1 byte for each column in table; 1 indicates that the corresponding column is NULL)

Nullbits

Ceiling (Ncol / 8)

Number of variable-length columns

VarCount

2 bytes

Variable column offset array

VarOffset

2 * VarCount

Variable-length data

VarData

VarOff[VarCount]
— (fsize + 4 + Ceiling
(Ncol / 8) + 2 * VarCount)

–5 DBCC checkconstraints

唯有系统管理员技能利用 DBCC 页。

 

DBCC checkconstraints(products)

唯独, 由于日常没有必要查阅数据页的源委, 因而在 SQL server 文书档案中找不到关于
DBCC 页的音讯。

有趣的是,当你成立一个表的时候,固定长度的列是先被积累的,比如那样叁个言语

/*

只是, 假设您想利用它, 下边是语法:

CREATE TABLE dbo.Demotable2010( 
               int PKID,not null
               emp_fname  varchar(10)   NOT NULL, 
               phone      char(12)      NOT NULL, 
               job_level  smallint      NOT NULL 
);

自笔者探讨钦赐表上的钦赐约束或具有节制的完整性

DBCC PAGE ({dbid | dbname}, filenum, pagenum[, printopt])

第意气风发存款和储蓄的是pkid,再是phone,job_level,最终才是 emp_fname,因为它是可变长度的。

DBCC CHECKCONSTRAINTS

 

后后生可畏篇大家将继续深造固定长度的行和可变长度的行的储存。真累啊!

     [(‘table_name’|’constraint_name’

DBCC 页面命令包含表6-6 中展现的参数。

)]

清单6-4 中的代码和结果展现来自 DBCC 页的演示输出, 其 printopt 值为1。

     [WITH {ALL_ERRORMSGS|ALL_CONSTRAINTS}] 

请小心, DBCC TRA老板N (3604) 提醒 SQL server 将结果回到给顾客端。

DBCC
CHECKCONSTRAINTS在有些数据库中,检查测量试验某个特定的牢笼依然全体封锁的风流倜傥致性。

倘使未有此 traceflag, 则不会为 DBCC 页命令归来输出。

DBCC CHECKCONSTRAINTS总是在当前数据库的上下文境况中推行。

 

瞩目,DBCC CHECKCONSTRAINTS并不开展磁盘可能文件等级的意气风发致性检查评定;

图片 7

它只是保险外键定义的大器晚成致性,同期检查实验节制——仅仅是认同数占有效。

正如所看见的, DBCC 页的输出分为四第风华正茂部分:
缓冲区、页标题、数据和偏移量表 (实际上是偏移量数组)。

假使您愿意检查评定磁盘上表和目录的风度翩翩致性,

缓冲区一些显得有关给定页的缓冲区的音信。

您应当实施DBCC CHECKDB或许在全部的表上推行DBCC CHECKALLOC和 DBCC
CHECKTABLE的构成。

此上下文中的缓冲区是管理页的内部存款和储蓄器结构,
本节中的新闻仅在页处于内存中时才相关。

*/

 


从 DBCC 页的 “输出” 页题目部分显得页上有所标题字段的数额。

–6 DBCC checkdb

(表6-5 显示了绝大许多这一个字段的意义。数据节包罗每行的新闻。

DBCC checkdb

运用全部 printopt 值1或3的 DBCC 页表示插槽地方,
即每行的6个表存款和储蓄257、页上的行的偏移量和行的长度。

/*

行数据分为三有个别。

自己商量数据库中的全部目的的分配和结构完整性

 

checkdb [(‘database_name'[, NOINDEX | REPAIR])] 

左列提醒展现数据所在行内的字节地点。

[WITH NO_INFOMSGS[, ALL_ERRORMSGS][, PHYSICAL_ONLY]

在那之中部分含有存储在页面上的实在多少, 每五列呈现两个十八进制数字。

[, ESTIMATEONLY][, TABLOCK]]

最右侧的列包含数据的 ASCII 字符表示情势。 此列中唯有字符数据是可读的,
固然大概会来得有些其余数据。

*/

“偏移量表” 部分显得页面末尾的行偏移量数组的内容。


 

–7 DBCC cleantable

在 DBCC 页的出口中, 您可以见见此页包涵23行, 第风华正茂行 (由插槽0提示)
从偏移量 1585 (0x631) 最初。

DBCC cleantable

其实存储在页面上的第后生可畏行实际上是6行,
而行偏移量数组中的偏移量为96。printopt 值为1的 DBCC 页显示 “插槽编号”
顺序中的行, 尽管能够从各类插槽的偏移量中来看,
亦不是在页面上其实存在行的一豆蔻梢头。

/*

即便利用 printopt 值为2的 DBCC 页, 则会见到页的具有80九十几个字节 (标头之后)
的转储, 按它们存款和储蓄在页面上的顺序排列。

回笼alter table drop column语句 删除可变长度列或text列后的蕴藏空间

 

cleantable (‘database_name’|database_id, ‘table_name’|table_id,
[batch_size])

*/


–8 DBCC dbreindex

DBCC dbreindex

/*

重新建立内定数据库的叁个或多少个目录

dbreindex (‘table_name’ [, index_name [, fillfactor ]]) [WITH
NO_INFOMSGS]

*/


–9 DBCC indexdefrag

DBCC indexdefrag

/*

对表或视图上的目录和非聚焦索引举办零散收拾

indexdefrag ({dbid | dbname | 0}, {tableid | tablename}, {indid |
indname})

*/


–10 DBCC pintable/DBCC unpintable

–将表数据驻留在内部存储器中或撤消驻留 在内部存款和储蓄器中的数据

–pintable (database_id, table_id)


–11 DBCC shrinkdatabase

–收缩钦赐数据库的数据文件和日志文件大小

–shrinkdatabase ({dbid | ‘dbname’}, [freespace_percentage [,
{NOTRUNCATE | TRUNCATEONLY}]])


–12 DBCC shrinkfile

–减少相关数据库的钦赐数据文件和日志文件大小

–shrinkfile ({fileid | ‘filename’}, [compress_size [, {NOTRUNCATE |
TRUNCATEONLY | EMPTYFILE}]])


–13 DBCC dllname(free)

–在内部存款和储蓄器中制惩钦赐的扩张怀恋进程动态链接库(DLL卡塔尔

–sp_helpextended proc

–查询当前内部存款和储蓄器中的扩大存款和储蓄进程动态链接库


–14 DBCC dropcleanbuffers

–从缓冲池中剔除全体缓冲区

/*

利用 DBCC DROPCLEANBUFFEEscortS
测量检验带有冷高速缓存的查询,而不用闭馆和另行启航服务器

*/


–15 DBCC freeproccache

–从过程缓冲区删除全数因素

–清理全数数据库的进度高速缓存


–16 DBCC inputButter

–展现从客商机发送到服务器的最终三个说话


–17 DBCC opentran

–查询有个别数据库执行时间最久的事情,由哪些程序有所


–18 DBCC show_statistics

–展现钦命表上的钦点这几天的当前分布计算信息


–19 DBCC showcontig

–展现内定表的数额和目录的碎片音信


–20 DBCC sqlperf

–可用参数logspace,iostats,threads

–重返多样立见成效的总计消息

—dbcc sqlperf(logspace)

Database Name                                                          
                                                         

Log Size (MB)            

Log Space Used (%)       Status      


–21 DBCC cachestats

–展现SQL SE君越VE兰德酷路泽内部存款和储蓄器的总计信息


–22 DBCC cursorstats

–显示SQL SELX570VEWrangler游标的总计消息


–23 DBCC sqlmgrstats

–展现缓冲中先读和前期计划的SQL语句


–24 DBCC errlog

–初步化SQL SELacrosseVE奥迪Q5错误日志文件


–25 DBCC flushprocindb

–排除SQL SE奥迪Q5VEEscort服务器内部存储器中有些数据库的寄存进程缓存内容


–26 DBCC Buffer

–突显缓冲区的善消息和页面音讯


–27 DBCC DBinfo

–呈现数据库结构音讯


–28 DBCC DBtable

–展现管理数据的表消息


–29 DBCC IND

–查看有些索引使用的页面音信


–30 DBCC REbuild_log

–重新建设构造SQL SE奇骏VE奥迪Q5事务日志文件


–31 DBCC log

–查看某些数据库使用的业务日志信息


–32 DBCC procbuf

–显示进度缓冲池中的缓冲区头和积攒进度头


–33 DBCC prtipage

–查看某些索引页面包车型客车每行指向的页面号


–34 DBCC pss

–呈现当前线总指挥部是到SQL SERAV4VETiguan的进度新闻


–35 DBCC resource

–展现服务器当前接收的能源气象


–36 DBCC tab

–查看数据页面包车型客车构造 

–=============================================

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图