刚看到sqlserver物理存储的最小单位是页,也就是8KB。前面96B为标头。又看到行数据的最为8060B。这里有点不理解。8*1024-96=8096>8060.还有36B是做什么用的啊?

解决方案 »

  1.   

    http://blog.csdn.net/aneu_man/article/details/5589285
      

  2.   

    行偏移矩阵需要 
    行数 * 4b每行数据至少有6b的浪费(两个状态BYTE,两个BYTE放定长数据长度,两个BYTE放字段个数)所以真正数据最多
    8096-4*1-6*1=8086如果出现不定长字段或者NULL字段,实际数据长度更小。
      

  3.   

    更正下
    36个BYTE全部预留给行偏移矩阵
    每行最小的内部开销是7BYTE,漏了NULL位图这个8060可以理解为SQL内部规定的行最大长度,注意这个长度包含内部开销,实际的数据长度还需要减去内部开销