我对这种压缩功能在 SQL Server 中的工作方式感到困惑:
对于相当多的大表,超过 TB 的表,我们最近实施了 PAGE 级压缩。
它是如何完成的示例:-
Use [DBname]
ALTER TABLE dbo.sampletable REBUILD PARTITION =1 WITH (DATA_COMPRESSION = PAGE);
ALTER TABLE dbo.sampletable REBUILD PARTITION =2 WITH (DATA_COMPRESSION = PAGE);
等等...
有问题的表都是分区表。
当检查我在表级别(聚集索引)看到的压缩细节时,它显示压缩 =PAGE
但对于现有的非聚集索引,压缩表示 =NONE
如果在表级别启用压缩或还需要在索引级别启用压缩,我不确定我应该从上面解释什么?
如果我们还应该考虑压缩 NC 索引,是否有空间和性能优势?基本上,我在这里压缩它们的理想情况是什么?
谢谢
我们无法回答您是否要压缩索引。只有您有权访问您的数据、服务器和查询。考虑因素包括:
页面压缩的破解(“解压缩”)非常昂贵。页面以压缩形式存在于内存中,这意味着每次访问页面(包括在内存中)时,都必须对其进行破解。您可能可以想象索引中的页面可以非常频繁地导航(破解)。
继续上面的推理。如果数据倾向于存在于缓存中(即使是未压缩的形式),那么您会注意到更多的 CPU 开销。但是如果数据倾向于存储在磁盘上,那么与潜在的 I/O 节省相比,CPU 开销可能会被淹没。
人们倾向于放弃行压缩作为一种选择。在某些情况下,它可以提供相当不错的压缩比,并且几乎没有开销。