我们每周自动备份 SQL Server。相关数据库配置为简单恢复。我们使用完整备份,而不是差异备份。
最近,我们不得不重新创建包含数据的表之一(使 2 个 varchar 字段的长度增加几个字符)。这需要运行一个脚本,该脚本创建一个新表,复制数据,然后删除旧表。这工作正常。
但奇怪的是,我们的每周备份文件现在缩减了 75% 以上!这些表没有大索引。所有数据都已正确复制(并经过验证)。我已经验证我们正在进行完整备份而不是增量备份。新文件恢复得很好。
我似乎无法弄清楚为什么备份文件会缩小这么多?我还注意到,尽管添加的数据量少于这个数字,但它们每周都会增大约 10 MB。
我猜我只是不明白某些事情。任何见解都将不胜感激。
答案1
如果所有数据都在那里,那么它就是数据库事务日志被提交到数据库并从磁盘中删除,以及数据库中任何“空白”被消除的组合。对于大多数数据库,当数据被删除时,行会被删除,但之后不会在该行中插入任何新数据,因此最终可能会出现大量不包含数据但仍然占用物理空间的“空白”。
数据库的逻辑大小(其数据占用的大小)与数据库的物理大小(数据库文件占用的大小)之间存在差异,该差异通常 [几乎完全] 是上述两件事的组合。