对非常大的表进行压缩
Compression for very large tables
我的生产系统中有三个非常大的 table,我需要对这些 table 进行压缩。我尝试按每个分区执行此操作以节省时间,因为每次我 运行 压缩查询都会导致 table 脱机。但是压缩单个分区仍然需要大约一天的时间。有谁知道一种方法可以帮助我压缩 tables 而不会花费很长时间的系统中断时间。
ALTER TABLE <table_name>
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),
...
)
可以压缩一个table并保持在线,只需使用ONLINE=ON。
请注意,如果您的 table 是一个堆,这将通过单线程完成,并且需要很长时间。
ALTER TABLE test_tbl REBUILD WITH (DATA_COMPRESSION=PAGE,ONLINE=ON)
其他选项可能是复制 table、压缩,然后删除旧的并重命名新的。如果 table 一直在使用,则您必须在切换之前进行进一步的同步。根据您的设置,此方法可能可行也可能不可行。
我的生产系统中有三个非常大的 table,我需要对这些 table 进行压缩。我尝试按每个分区执行此操作以节省时间,因为每次我 运行 压缩查询都会导致 table 脱机。但是压缩单个分区仍然需要大约一天的时间。有谁知道一种方法可以帮助我压缩 tables 而不会花费很长时间的系统中断时间。
ALTER TABLE <table_name>
REBUILD PARTITION = ALL
WITH (DATA_COMPRESSION = PAGE ON PARTITIONS(<range>),
...
)
可以压缩一个table并保持在线,只需使用ONLINE=ON。
请注意,如果您的 table 是一个堆,这将通过单线程完成,并且需要很长时间。
ALTER TABLE test_tbl REBUILD WITH (DATA_COMPRESSION=PAGE,ONLINE=ON)
其他选项可能是复制 table、压缩,然后删除旧的并重命名新的。如果 table 一直在使用,则您必须在切换之前进行进一步的同步。根据您的设置,此方法可能可行也可能不可行。