gpt4 book ai didi

sql - 归档超过 1,000,000,000 行的巨大表的最佳实践

转载 作者:太空狗 更新时间:2023-10-30 01:45:50 26 4
gpt4 key购买 nike

我正在使用 SQL Server 2005。有一个审计跟踪表,包含超过 1,000,000,000 行。我打算存档此表。当我使用 nolock 进行简单选择时,我仍然可以发现阻塞(可能是其他进程的 IO 阻塞?)。那么对于这种情况有什么最佳实践吗?

最佳答案

对于这么大的表,您需要找到一些有效的分片/分区策略。从这个意义上说,归档往往是一种分区形式,但不是一种很好的分区形式,因为您通常希望查询当前文件并进行归档。在最坏的情况下,您最终会在存档表和当前表的 UNION 上执行 SELECT,这比您根本不拆分它们还要糟糕。

您通常会通过找到一些其他方式对数据进行切片来做得更好,比如在记录类型或其他方面。但是,如果您打算按日期拆分它,请绝对确保您不会查询存档+当前数据集。

此外,SQL Server 2005+ 默认情况下不启用 MVCC。但是,如果您启用 MS 所谓的快照隔离,它就可以做到这一点。参见 Serializable vs. Snapshot Isolation Level .

启用此功能的效果是,未提交的 INSERT 或 UPDATE 将阻塞另一个事务中的 SELECT,直到第一个事务提交或回滚。这可能会导致不必要的锁定并限制您的可扩展性。

关于sql - 归档超过 1,000,000,000 行的巨大表的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2360824/

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