我正在尝试减少超过 4 GB 并不断增长的 SQL Server 数据库的存储空间。我在 SSMS 中打开了数据压缩向导,在最大的表上选择了压缩类型“无”,然后单击了计算 按钮。令我惊讶的是,即使没有压缩,结果也不到原始结果的一半(2.2 GB 减少到不到 1 GB)。
这是真正的节省吗?也就是说,将压缩设置为“无”是否会一次性清理未使用的空间?或者这是在浪费时间吗?
最佳答案
好的,在使用示例数据库进行测试后,这就是我的发现。重要的是将表的压缩设置为“无”会导致 SSMS 生成如下脚本:
USE [MyDatabase]
ALTER TABLE [dbo].[MyTable] REBUILD
PARTITION = ALL
WITH (DATA_COMPRESSION = NONE)
请特别注意“alter table MyTable rebuild”。如果表已被修改,例如删除列,则每行中都有未使用的空间。 REBUILD 选项回收此空间,表变小。
因此,回答我自己的问题:是的,将压缩设置为“无”是一次性清理表中未使用的空间。由此产生的节省不如“计算”按钮所建议的那么好,但在我的示例中仍然很重要。
总而言之,一个简单的“alter table MyTable rebuild”就可以完成同样的事情。
(感谢发贴的人!)
关于sql-server - SQL压缩 "None"是否清理数据表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38310485/