收缩数据库可以提高性能吗

Fre*_*gen 3 performance sql-server-2016

昨天我收到一封来自我们的供应商的邮件,提到他们的应用程序存在性能问题。

我还不知道问题是什么,但他们提出的解决方案是缩小数据库(因为有很多可用空间)。据我所知,这不会导致性能改进,但显然他们在其他客户申请时使用这种方法取得了成功。

我认为缩小发生的方式是将页面从文件的后面移动到前面,就像这样压缩数据库并导致大量碎片。

范围扫描是否有可能利用压缩数据库?
或者还有其他一些边缘情况可以从缩小数据库中受益吗?

Pau*_*ite 9

强烈的一般建议是永远不要收缩当然。

尽管如此,这里的问题是:萎缩不断提高性能?

也许会。在每个文件的开头合并所有使用的页面可能有利于提升读取,并在多个级别(包括存储层)具有有利的缓存效果。此外,shrink将从堆表中删除任何空页而不是移动它们,因此这可能会直接帮助堆表扫描性能。

Shrink 还检查是否应该重新压缩 b 树或堆页面,如果正在使用数据压缩,这可能是相关的。收缩也从不生成转发指针,因此收缩堆页面会导致“取消转发”和存根删除。

最好采取更有效的行动来解决导致绩效不佳的具体原因。这需要了解问题并知道如何解决它,而不是(盲目地)尝试以前似乎可行的方法。