gpt4 book ai didi

sql - SQL Server 中主键和唯一聚集索引的性能差异

转载 作者:行者123 更新时间:2023-12-01 09:34:06 31 4
gpt4 key购买 nike

我们有 2 个表,大约有 40M 行。数据库的大小约为 20GB,大部分是针对这 2 个表的。每天,我们需要删除一些数据,即大约 10M 行。因此,我们使用批量删除将日志文件保持在一定大小。

最初,表没有主键。但是每个表都有唯一的聚集索引。删除需要永远。即删除虚拟机上的 500K 行大约需要 2-3 小时。 * 删除前,重建索引。

现在,我们将唯一的聚集索引转换为主键。删除 2M 行大约需要 20-30 分钟。

我知道主键和唯一聚集索引之间存在差异,但为什么性能如此不同?

有人有一些见解吗?

谢谢

最佳答案

滚动我的 8 球:如果您声明了一个非集群主键(正如您的帖子中所暗示的那样),那么在每个批次中,您很可能会遇到 index tipping point .因此,每个批次将执行 40M 行的完整扫描以删除批次大小。然后,在下一批中,再次进行全面扫描。依此类推,直到您的 10M 将被删除。使用聚集键,批次应该只扫描被删除的实际行(当然我假设你的批量删除标准实际上会使用聚集键......)。如您所见,当人们开始猜测时,会有许多未知数......

但最终......您有一个性能问题,您应该使用性能故障排除技术进行调查。捕获执行计划,wait stats , statistics io .遵循类似 Waits and Queues 的方法论.措施。不听guesses来自刚刚推出 8-Ball 的互联网上的某人...

关于sql - SQL Server 中主键和唯一聚集索引的性能差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11546688/

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