【发布时间】:2014-04-03 15:37:34
【问题描述】:
我正在考虑在未来的项目中使用 LocalDB,而不是 OleDB (MDB)。
我需要不时压缩数据库吗?如果是,那么如何?
我发现在 SQL 数据库(MDF,对吗?)的情况下有一个 Shrink 选项,可以以某种方式定义自动收缩和修复。也许我不需要进行压缩(据我了解,这是创建新数据库并将实际内容复制到其中,因此所有 outdated 内容都将被删除),但以某种方式启用压缩就足够了(这是一个选项,以便服务器通过将 garbage 移动到数据库文件的末尾并截断文件来定期执行一种 garbage 收集。
这也很有趣,收缩在文件系统碎片方面的效果如何(我的猜测不是很好)。
总而言之,我更喜欢压缩,如何执行压缩的想法(代码)以及如何确定何时需要压缩(执行压缩的标准)。
我明白了,有 BACKUP 命令,也许压缩看起来像:1)备份 2)重新创建数据库 3)从备份恢复?
【问题讨论】:
-
您能否就您认为可能需要压缩的原因提供更多背景信息?我能想到的唯一原因是,如果您担心达到数据库大小限制,我认为 LocalDB 现在是 10GB。
-
MDF 限制为 16 TB,MDB - 2 Gb(tbh 不足)。我正在学习(大约 15 年前)什么数据库不会物理地删除记录,而是将它们标记为这样。也许还有其他操作,没有像他们认为的那样执行(索引、更新等)。因此,如果您进行大量更改 - 您的数据库将会增长,变得更慢,甚至可能会出现错误。在 MDB 的情况下,压缩是必须的,我知道如何使用 JRO 来做到这一点。但我没有找到与 MDF 相关的任何类似内容(或者我应该说 LocalDB,或者 SQL express?)。
-
我尝试回答下面的问题,并添加了 sql-server 标签来吸引真正的专家来回答这个问题。
标签: c# sql-server localdb