昨天我收到一封来自我们的供应商的邮件,提到他们的应用程序存在性能问题。
我还不知道问题是什么,但他们提出的解决方案是缩小数据库(因为有很多可用空间)。据我所知,这不会导致性能提升,但显然他们在应用到其他客户时使用这种方法取得了成功。
我认为缩小发生的方式是将页面从文件的后部移动到文件的前部,就像这样压缩数据库并导致大量碎片。
范围扫描是否有可能利用压缩数据库?
或者还有其他一些可以从缩小数据库中受益的边缘案例吗?
昨天我收到一封来自我们的供应商的邮件,提到他们的应用程序存在性能问题。
我还不知道问题是什么,但他们提出的解决方案是缩小数据库(因为有很多可用空间)。据我所知,这不会导致性能提升,但显然他们在应用到其他客户时使用这种方法取得了成功。
我认为缩小发生的方式是将页面从文件的后部移动到文件的前部,就像这样压缩数据库并导致大量碎片。
范围扫描是否有可能利用压缩数据库?
或者还有其他一些可以从缩小数据库中受益的边缘案例吗?
强烈的一般建议当然是永远不要收缩。
不过,这里的问题是:缩小可以提高性能吗?
也许。在每个文件的开头合并所有使用的页面可能有利于加速读取,并在多个级别(包括存储层)具有良好的缓存效果。此外,shrink 会从堆表中删除任何空页而不是移动它们,因此这可能会直接提高堆表扫描性能。
Shrink 还检查是否应重新压缩 b 树或堆页面,这可能与正在使用数据压缩相关。Shrink 也从不生成转发指针,因此缩小堆页面会导致“未转发”和存根删除。
最好还是采取更有效的措施来解决导致绩效不佳的具体原因。这需要了解问题并知道如何解决它,而不是(盲目地)尝试以前似乎可行的事情。