2015-04-05 78 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个字节。

相关问题