来自我的问题“ 8078 bytes in 8060 B datapage (SQL Server)?”,其中向我解释了如何在MS SQL Server中获取每页8078字节的数据。
如果我计算仅一页的数据存储(无开销)每页的字节数(其中不包含固定索引类型记录的一列(根据MSDN文章Estimating the Size of a Heap),那么我来8087字节(每页)。
[如何在不购买和研究1000多页的书的情况下,达到每行8060字节的限制(在其他问题的答案中提到)和每行(varchar,nvarchar)的8000字节的限制?
我当然在存储分配中缺少一些东西:要管理的块越少,开销就越大...
Inside the Storage Engine: Anatomy of a record
这是SQL Server 2005
所以,对于一个字符(8000)
但是,如果您有40个varchar(200)列
总计= 8080 + 4 + 6 + 2 + 14 =8106。WTF?创建此表时,您会收到警告
我不会太挂了:该信息具有no实际的日常价值
我不确定您要问的是什么,但是如果您的问题是“为什么最大行长是8060字节而不是其他一些数字?”或“为什么NVARCHAR的最大行长是8000字节?”那么简短的答案是,谁知道呢? (正如gbn所说,谁在乎?)
所有MSSQL限制-数据类型大小,最大行大小,每个表的列,每个索引的列等-只是Microsoft的设计决策。我非常确定,决策背后有大量的工程文档,但是大多数人无法访问该信息。
如果您对限制的具体细节,行大小的计算方式等感兴趣,那么阅读MSSQL文档是最好的起点。