SQL Server最小的存储单位是页(Page),一个页的大小是8K=8192字节。一个数据页是由3部分组成:页头、数据行和行偏移矩阵,具体结构如图:

行偏移矩阵在页的最后面,而且是倒序排列的,使用2个字节来表示数据行在页面内部的偏移量,有1行数据则行偏移矩阵的大小是2字节,有2行数据则行偏移矩阵的大小是4字节,以此类推。
8096-4=8092
除了页头占用的空间和行偏移矩阵占用的空间,中间剩下的空间就是给数据行使用的。一个数据行中还存在其他的信息用于表示该行数据,具体的结构是这样的:
状态位A 1字节
状态位B 1字节
定长数据类型的长度 2字节
定长数据的内容 具体定长数据字节
列数 2字节
NULL位图 列数/8个字节
变长列的个数 2字节
变长列的偏移矩阵 变长列个数*2个字节
变长列的数据 具体变长数据字节
这些最少占据1+1+2+2+1=7
SQL Server的最小存储单位是8K大小的页,由页头、数据行和行偏移矩阵组成。行偏移矩阵倒序排列,根据数据行数量占用不同字节数。数据行内包含状态位、定长数据、NULL位图、变长列信息等,这些基础结构占用至少7字节空间。
结构&spm=1001.2101.3001.5002&articleId=7348682&d=1&t=3&u=e16bd8dcc2a24a769b6ed8d104685a81)
3755

被折叠的 条评论
为什么被折叠?



