gpt4 book ai didi

sql-server - 'Bytes per row' 在 SQL Server max 中到底意味着什么?容量规范

转载 作者:行者123 更新时间:2023-12-04 18:01:03 25 4
gpt4 key购买 nike

参见 Max Capacity Specs

所以在“每行字节数”旁边是 8060,但随后在“每 ntext 或 nvarchar(max) 列的字符数”旁边是 2^31-1。

最大列数为 30,000。

我不明白为什么在 1 行中只能有 8060 个字节,例如其他 2 个数字(2^31-1 和 30,000)是如此之大。

好吧,我会尝试一下我认为可能的解释。当然,我可以定义 30,000 个 nvarchar 列,但如果其中一个包含长度大约为 7500 的字符串,则 29,999 必须为 null。

如果我想在其他 29,999 列中有一些数据,我需要使用行溢出存储,这会削弱快速搜索的可能性。

(请不要讨论“为什么需要 30,000 列,需要规范化等”类型。我的数字只是为了说明我可能完全误解了每行 8,060 字节的限制。)

最佳答案

Rows 存储在 Pages 中,扣除存储系统信息所需的空间后,页面大小为 8KB,您有 8060 字节的数据。行大小限制意味着行不能拆分为多个页面。 Text 和过时的 Image 类型存储在“正常”8KB 页面之外的特殊类型页面中。如您所述,超出常规页面大小的长字符串将移至另一种特殊类型的页面行溢出存储。仍然存储在“正常”数据页中的原始 row 只保留键,以便可以访问那些具有长数据的外部页。

查看表大小的计算算法估计:
https://msdn.microsoft.com/en-us/library/ms178085.aspx

关于sql-server - 'Bytes per row' 在 SQL Server max 中到底意味着什么?容量规范,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35405490/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com