2015-04-05 29 views
7

SQL Server將數據存儲在012k(8192)字節的頁面中。在數據頁面中,爲頁眉保留96個字節。考慮到數據頁的最大允許容量爲8060字節,仍然有36個字節。但是我找不到任何引用在這個36字節塊去的地方。SQL Server:數據頁面大小混淆:8060 + 96字節仍小於8k字節

任何幫助?

+7

請參閱[Paul Randal關於該主題的優秀帖子](http://www.sqlskills.com/blogs/paul/inside-the-storage-engine-anatomy-of-a-page/) - 除了96字節頁面上的頁眉,每個頁面還需要佔用一些空間的頁面末尾的* slot數組*的空間。或者[請參閱頁面內部的SImple-Talk帖子](https://www.simple-talk.com/sql/database-administration/sql-server-storage-internals-101/) – 2015-04-05 10:37:38

+1

@marc_s如果剩下的32字節進入槽陣列,則每個頁面不能包含多於16行,因爲陣列的每個元素佔用2個字節,這不是一個正確的假設。此外,在SimpleTalk [鏈接](https://www.simple-talk.com/sql/database-administration/sql-server-storage-internals-101/)中有一張圖片描述了頁面的解剖結構,身體包括槽陣列。 – Hans 2015-04-05 17:11:37

+3

http://dba.stackexchange.com/q/15053/3690 – 2015-04-05 17:28:41

回答

0

沒有爲插槽陣列/行偏移陣列指定固定大小。

頁眉佔用每個數據頁面的前96個字節(爲數據留出8,096個字節,行開銷和行偏移)。在此之外,單個數據行的最大大小可以是8,060個字節。

存儲在給定頁面上的行數取決於表 結構和存儲的數據。具有所有固定長度列的表總是可以存儲每頁相同數量的行;根據輸入數據的實際長度,可變長度行可以存儲儘可能多的行。

例如,頁面可以包含多於19行,其中每行大小爲403字節。在這種情況下,時隙陣列大小將爲38個字節。