SQL压缩“无”清理数据表吗?

时间:2016-07-11 15:14:46

标签: sql-server compression

我正在尝试减少超过4 GB且不断增长的SQL Server数据库的存储空间。我在SSMS中打开了数据压缩向导,在最大的表上选择了压缩类型“无”,然后单击计算按钮。令我感到惊讶的是,即使没有压缩,结果也不到原来的一半(2.2 GB到小于1 GB)。

这是真正的节省吗?也就是说,将压缩设置为“无”执行一次性清理未使用的空间?或者这是浪费时间?

Compression Wizard

2 个答案:

答案 0 :(得分:2)

好的,在使用示例数据库进行测试之后,这就是我找到的内容。重要的是将表的压缩设置为“无”会导致SSMS生成如下的脚本:

USE [MyDatabase]
ALTER TABLE [dbo].[MyTable] REBUILD
PARTITION = ALL
WITH (DATA_COMPRESSION = NONE)

请特别注意“alter table MyTable rebuild ”。如果已修改表(例如删除列),则每行中都有未使用的空间。 REBUILD选项回收此空间,表格变小。

所以,回答我自己的问题:是的,将压缩设置为“无”是一次性清理表中未使用的空间。由此产生的节省不如“计算”按钮所示,但在我的例子中仍然很重要。

所有这一切,一个简单的“改变表MyTable重建”将完成同样的事情。

(感谢那些发帖的人!)

答案 1 :(得分:1)

不,它没有。

压缩类型= NONE仅表示在不应用任何压缩的情况下重建表中的索引。因此,它不会改变图形。下次打开表的压缩向导时,单击"计算"后将显示相同的数字。

https://msdn.microsoft.com/en-us/library/ms190273.aspx

https://msdn.microsoft.com/en-us/library/ms188388.aspx