我的生产系统中有三个非常大的表,我需要对这些表进行压缩。我试图通过每个分区来节省时间,因为每次运行压缩查询都会导致表脱机。但压缩单个分区仍需要一天左右的时间。有没有人知道一种方法可以帮助我压缩表格而不花费系统的长时间停机时间。
ALTER TABLE <table_name>
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),
...
)
答案 0 :(得分:1)
可以压缩表格并使其保持在线状态,只需使用ONLINE = ON。
注意,如果你的表是一个堆,这将是单线程完成的,需要很长时间。
ALTER TABLE test_tbl REBUILD WITH (DATA_COMPRESSION=PAGE,ONLINE=ON)
其他选项可以是获取表的副本,压缩,然后删除旧表并重命名新表。如果表一直在使用,则必须在切换之前进行进一步的同步。根据您的设置,这种方法可能会也可能不会。