一个数据存储的基础知识的问题

习惯性蹭分 2012-12-05 11:48:28
刚看到sqlserver物理存储的最小单位是页,也就是8KB。前面96B为标头。又看到行数据的最为8060B。这里有点不理解。8*1024-96=8096>8060.还有36B是做什么用的啊?
...全文
111 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
Sylaro0 2012-12-05
  • 打赏
  • 举报
回复
http://blog.csdn.net/aneu_man/article/details/5589285
發糞塗牆 2012-12-05
  • 打赏
  • 举报
回复
还要存放偏移量,但是这部分有多少好像没说
习惯性蹭分 2012-12-05
  • 打赏
  • 举报
回复
谢谢各位,小二结帐。
昵称被占用了 2012-12-05
  • 打赏
  • 举报
回复
更正下 36个BYTE全部预留给行偏移矩阵 每行最小的内部开销是7BYTE,漏了NULL位图 这个8060可以理解为SQL内部规定的行最大长度,注意这个长度包含内部开销,实际的数据长度还需要减去内部开销
昵称被占用了 2012-12-05
  • 打赏
  • 举报
回复
行偏移矩阵需要 行数 * 4b 每行数据至少有6b的浪费(两个状态BYTE,两个BYTE放定长数据长度,两个BYTE放字段个数) 所以真正数据最多 8096-4*1-6*1=8086 如果出现不定长字段或者NULL字段,实际数据长度更小。
guguda2008 2012-12-05
  • 打赏
  • 举报
回复
页的底部有个偏移量标识位
  • 打赏
  • 举报
回复
对 还有个什么偏移量 但是看的那本书上没有具体说占了多大空间

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧