SQL Server max 中“每行字节数”到底是什么意思?容量规格

2024-01-15

See 最大容量规格 https://msdn.microsoft.com/en-us/library/ms143432.aspx

因此,“每行字节数”旁边是 8060,但稍后“每个 ntext 或 nvarchar(max) 列的字符数”旁边是 2^31-1。

最大列数为 30,000。

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

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

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

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


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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

SQL Server max 中“每行字节数”到底是什么意思?容量规格 的相关文章

  • SQL Server 全文的自定义断字器

    有谁知道如何为 SQL Server 2005 创建自定义分词系统 我更喜欢用 C 编写它 我需要能够搜索 c f 等术语 但 字符是英语 英国 分词器组件中的分词器 不能以任何其他方式更改 我发现以下文章提供了不完整的示例 缺少 IWor
  • SQL最近的命令?微软SQL

    我只是编写一个查询来查看我的客户数据库并列出他们下了多少订单等 我正在努力添加到此查询中的是只显示该电子邮件的最新 OrderID 有任何想法吗 这是我的查询 select top 1000 BuyerEMail COUNT HowMany
  • SQL Server 为什么索引不与 OR 一起使用

    我一直在研究索引并试图了解它们是如何工作的以及如何使用它们来提高性能 但我错过了一些东西 我有下表 Person Id Name Email Phone 1 John E1 P1 2 Max E2 P2 我正在尝试找到对列进行索引的最佳方法
  • 将语句插入 SQL Server 数据库

    最近几天我试图找到这个错误 但没有成功 我正在尝试在数据库中插入一个新行 一切都很顺利 没有错误 也没有程序崩溃 My INSERT声明如下 INSERT INTO Polozaj Znesek Uporabnik Cas Kupec Po
  • T-SQL - 是否有(免费)方法来比较两个表中的数据?

    I have table a and table b SQL Server 2008 两个表具有完全相同的架构 出于本问题的目的 请考虑table a 我的本地开发表 table b 实时表 我需要创建一个 SQL 脚本 包含UPDATE
  • 嵌套 linq 查询上的“列名 [ColumnName] 无效”

    最后更新 经过大量测试后 我意识到 如果我对 SQL 2000 和 SQL 2005 上的同一数据集 在本例中为 Northwind 表运行相同的查询 我会得到两个不同的结果 在 SQL 2000 上 我收到问题中的错误 在 SQL 200
  • SQL Server 内部级联更新/删除如何工作?

    好吧 我相信这个问题还不清楚 这里我用另一种方式重写它 假设我创建两个表 table1 c1 int PRIMARY KEY table2 table1c11 int 之间存在关系table1 and table2 i e table1 c
  • 查看与存储过程连接的结果

    我在 SQL Server 中有一个由应用程序使用的现有视图 我需要加入从存储过程返回的表 存储过程会执行很多操作 例如在返回结果之前插入多个 temp 表 我尝试将存储过程转换为表值函数 但是插入 TVF 内的临时表会导致编译错误 我还有
  • 如何确定给定的表是否是内存优化的?

    早上好 我的第一个问题是如何确定在 MS SQL Server 中创建的表是否是内存优化的 我有一些表 但我不记得我创建的其中一些表是否经过内存优化 非常感谢您的回答 为了重复这里的另一个答案 这是一种获取状态的方法all数据库中的表 se
  • 实体框架死锁问题

    我在使用 NET 4 的新实体框架时遇到了一个奇怪的问题 我有一个 SQL Server 2005 EXPRESS 数据库 我的服务使用实体框架将数据写入两个表 假设表是 TableA 和 TableB TableB 具有 TableA 的
  • 针对 SQL Server 的 SQL 查询的执行日期时间

    我曾经发现过这个很好的查询here https dba stackexchange com a 135080 43889 我想将查询的执行时间添加到以下查询中 USE master go SELECT sdest DatabaseName
  • T-SQL:检查电子邮件格式

    我有这样的场景 我需要物理数据库中的数据完整性 例如 我有一个变量 email address VARCHAR 200 我想检查一下值是否为 email address是电子邮件格式 有人知道如何检查 T SQL 中的格式吗 非常感谢 我使
  • 在 Sql Server 2005 中实现最后修改列的最佳方法?

    如何在 SQL 中实现最后修改列 我知道对于创建日期的列 您可以将默认值设置为getdate 对于最后修改我一直使用触发器 但似乎必须有更好的方法 Thanks 触发器是最好的方法 因为此逻辑与表密切相关 而不是与应用程序相关 除了更细粒度
  • 批量插入固定宽度字段

    如何使用批量插入命令指定字段长度 示例 如果我有一个名为 c Temp TableA txt 的表 并且它具有 123ABC 456DEF 我有一张桌子 例如 use tempdb CREATE TABLE TABLEA Field1 ch
  • 为什么需要 EndExecuteNonQuery()?

    文档here http msdn microsoft com en us library ca56w9se aspx指出 开发人员必须致电 EndExecuteNonQuery 方法完成 操作 我无法找到一个充分的理由来解释为什么会这样 或
  • 是否可以将普通表与临时表进行左外连接?

    我创建 SQL Server 查询并有一个包含记录的普通表 另一方面有一个包含记录的临时表 该表不为空 并且所有字段都没有任何冲突 加入 可以连接这两个不同类型的表吗 SELECT NormalTable Entityname FROM N
  • 表值函数降低了我的查询性能

    今天我在尝试让查询按照我期望的方式执行时经历了一段可怕的时光 我不得不对昨天查询中的表值函数进行轻微更改 该更改对查询产生了巨大的性能影响 在评估执行计划并查看统计 IO 和时间后 我发现因为我更改了函数以返回表变量而不仅仅是结果集 所以它
  • C# 通过实体框架调用 SQL Server 用户定义的函数

    我不敢相信我必须问这个问题 但我被困住了 我花了三个小时试图解决这个问题 但我被困住了 我可以在以前版本的 C 中执行此操作 但我卡住了 在继续之前 我正在研究堆栈 视觉工作室2012 SQL Server 2012 NET Framewo
  • 将多个子查询作为值插入

    假设我要插入一个有很多 fk 的表 只是为了在下面解释一下错误的说法 insert into mytable values somevalue somevalue select id from othertable1 where condi
  • 使用变量获取 SQL xml 属性值

    我有一个 SQL 函数 它接受一个名为attribute 这是我想要从中获取值的 xml 属性 xmlPath是完整的 XML 字符串 我的 xml 看起来像这样

随机推荐