从我的问题"8078 bytes in 8060 B datapage (SQL Server)?“开始,它向我解释了如何在MS SQL Server中获得每页8078字节的数据。
如果我计算只有一行和一列无索引的固定大小类型记录(根据MSDN文章Estimating the Size of a Heap)用于数据存储(没有开销)的每页字节数,那么我得出的结果是8087字节(每页)。
如何在不购买和学习1000+页面书籍的情况下达到每行8060字节的限制(在我的其他问题的答案中提到)和每行8000字节的限制(varchar,nvarchar)?
我肯定在存储分配中遗漏了一些东西:需要管理的块越少,开销就越大……
发布于 2010-09-25 09:44:53
Inside the Storage Engine: Anatomy of a record
这是针对SQL Server 2005的
< NULL
>H122这允许在读取空列时进行优化
末尾的偏移量
中版本存储区的指针
因此,对于一个字符(8000)
但是,如果您有40个varchar(200)列
总数= 8080 +4+6+2+ 14 = 8106。见鬼?创建此表时,您会收到一条警告
我不会太在意它:这个信息在日常生活中没有实际的价值()。
发布于 2010-09-25 14:12:39
我不完全确定您在问什么,但是如果您的问题是“为什么最大行长度是8060字节,而不是其他数字?”,或者“为什么NVARCHAR的最大长度是8000字节?”那么简短的答案就是,谁知道呢?(正如gbn所说,谁在乎?)
所有MSSQL限制-数据类型大小、最大行大小、每个表的列、每个索引的列等-都是Microsoft的设计决策。我非常确定这些决策背后有大量的工程文档,但大多数人都无法访问这些信息。
如果您对限制是什么、如何计算行大小等特定细节感兴趣,那么阅读MSSQL文档是最好的起点。
https://stackoverflow.com/questions/3793022
复制相似问题