SQL Server表中行数的限制

4
在SQL Server表中,是否存在行数的硬性限制?我认为唯一的限制是基于物理存储。
对于具有和不具有索引的表,什么时候性能会显着下降(如果有)?对于非常大的表,是否有任何常见做法?
为了提供一些领域知识,我们考虑使用审核表来记录数据库中所有表格字段的更改,并想知道可能会遇到哪些问题。
4个回答

2

您说得没错,行数受可用存储空间的限制。

很难给出具体数字,因为这在很大程度上取决于您的服务器硬件、配置和查询效率。

例如,随着行数增加,简单的select语句将运行更快,显示较少的降级,而全文或近似搜索将会运行更慢。


2
BrianV是正确的。很难给出一个规则,因为它取决于您如何使用表格,它如何索引,表格中的实际列等等。
至于常见做法...对于非常大的表格,您可能考虑分区。如果您发现您的日志通常只关心最近1个月(或1天、1周、1年等)的更改,则这可能特别有用。然后,您可以将旧数据存档,以便在绝对需要时可用,但不会妨碍您,因为您几乎永远不需要它。
另一件要考虑的事情是,如果您还没有计划这样做,可以为每个实际表格设置单独的更改日志表。使用单个日志表使处理变得非常困难。通常,您必须在一个自由格式的文本字段中记录信息,这很难查询和处理。此外,如果您针对每个已更改的列都有一行,则查看同时发生的更改就很困难,因为您必须进行许多连接。

2

除了上述的一切建议之外,我认为需要就索引/性能方面提供更多的背景信息。

如上所述,由于索引的质量和数量不同,因此无法给出性能数字。此外,它还取决于您想要优化什么操作。您需要优化插入吗?还是更关心查询响应速度?

如果您真正关心插入速度,则分区以及非常谨慎的索引考虑将是关键。

Tom H的单独表建议也是一个好主意。


1

使用审计表的另一种方法是每月(或每周,具体取决于您放入多少数据)归档一次数据。这样,如果您需要使用最新数据重新创建一些最近的更改,则可以针对较小的表执行操作,从而更快地完成操作(我发现从审计表中恢复几乎总是紧急任务!)。但是,如果您需要回溯更远的时间,仍然可以使用可用的数据。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接