码迷,mamicode.com
首页 > 其他好文 > 详细

[20140722] forwarded和forwarding记录

时间:2014-07-22 22:35:32      阅读:176      评论:0      收藏:0      [点我收藏+]

标签:style   blog   http   color   数据   2014   

背景:

今天被人文集forwarded和forwarding记录的事情。

简单介绍:

当堆表跟新某一个列的时候发现,不够放了,那么就在那行记录上标记forwarding,并把数据放到另外一个page,行被标记上forwarded。

有《深入解析 sql server 2008》 可以看 p272,里面稍微有点提及

关于page的资料:

     可以查看 http://www.sqlskills.com/blogs/paul/inside-the-storage-engine-anatomy-of-a-record/

DROP TABLE bigrows;
GO
CREATE TABLE bigrows
( a int IDENTITY PRIMARY KEY,
b varchar(1600),
c varchar(1600));
GO
INSERT INTO bigrows
VALUES (REPLICATE(a, 1600), ‘‘);
INSERT INTO bigrows
VALUES (REPLICATE(b, 1600), ‘‘);
INSERT INTO bigrows
VALUES (REPLICATE(c, 1600), ‘‘);
INSERT INTO bigrows
VALUES (REPLICATE(d, 1600), ‘‘);
INSERT INTO bigrows
VALUES (REPLICATE(e, 1600), ‘‘);
GO
UPDATE bigrows
SET c = REPLICATE(x, 1600)
WHERE a = 3;
GO

DBCC IND(tst,bigrows,1)

之后 dbcc page 就会看到a=3这一行被forward了。

返回:04e42100 00010001 00

0x04表示forwarded记录,e4210000 表示forward的page(paul blog的说法和 《深入解析 sql server 2008》说法不一致,我认为paul blog内的说法更加靠谱),中间那个1 表示fileid,最后一个1表示slowid,根据paul blog的说法:

http://www.sqlskills.com/blogs/paul/forwarding-and-forwarded-records-and-the-back-pointer-size/#comment-87661

2-byte file ID, 4-byte page-in-file, 2-byte slot ID

forwarding记录头(不包含可变数据)

返回:32000800 05000000 03000003 00530693 0c9d8c

普通记录(不包含可变数据)

返回:30000800 06000000 03000002 00510654 06

0x32其中可以通过发的paul的blog里面可以发现这个行是forwarded。之后的和普通的行格式是一样的,会发现多了1个可变列,并且存的是forwarding的page信息。

最后一个可变字段数据:00 04e22100 00010002 00  。

[20140722] forwarded和forwarding记录,布布扣,bubuko.com

[20140722] forwarded和forwarding记录

标签:style   blog   http   color   数据   2014   

原文地址:http://www.cnblogs.com/Amaranthus/p/3860939.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!