微软的一篇旧论文ROW
说,如果您有足够的 CPU 空间,请考虑默认使用压缩(重点是我的)。
如果行压缩可以节省空间,并且系统可以承受 10% 的 CPU 使用率增长,则所有数据都应进行行压缩
如今,我们的 CPU 空间比撰写本文时还要多。智者曾说过,PAGE
除非有令人信服的理由不这样做,否则我们应该考虑在任何地方使用压缩。
这些都是很好的建议,我经常看到sp_estimate_data_compression_savings
有人同意。但是,对于经常访问的微型表,应该怎么做呢?例如,我有一些非常小的维度表。最多 100 行,列很少。因为它们太小了,所以任何压缩带来的空间节省效益都很小。在有大量可用 CPU 空间的盒子上应用ROW
或压缩这些微型表的最佳实践是什么?PAGE
就这个问题而言,请忽略列存储。我们只讨论基于磁盘的表上的老式行存储索引。
从性能角度来看,不是的,您应该关注那些可以通过压缩节省来帮助您更好地利用 SQL Server 分配给它的硬件的表。
但从标准和实践的角度来看,你应该压缩所有内容,最好使用页面压缩。它为创建索引设定了一般文化。
如果您确实想强制执行这一点,您可以编写一个 DDL 触发器来阻止在没有压缩的情况下创建索引。