天天看點

forwarded和forwarding記錄

背景:

今天被人文集forwarded和forwarding記錄的事情。

簡單介紹:

當堆表跟新某一個列的時候發現,不夠放了,那麼就在那行記錄上标記forwarding,并把資料放到另外一個page,行被标記上forwarded。

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

關于page的資料:

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

<a></a>

之後 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  。

    本文轉自 Fanr_Zh 部落格園部落格,原文連結:http://www.cnblogs.com/Amaranthus/p/3860939.html,如需轉載請自行聯系原作者