我正在考虑在未来的项目中使用LocalDB,而不是OleDB(MDB)。
我是否需要不时压缩数据库?如果是,那怎么样?
我发现在SQL数据库(MDF,对吗?)的情况下有Shrink
选项,有可能以某种方式定义自动收缩和修复。也许我不需要进行压缩(根据我的理解,创建新数据库并将实际内容复制到其中,因此所有过时的内容都被删除),但这足以实现收缩不知何故(这是一个选项,因此服务器定期执行一种垃圾收集,将垃圾移动到数据库文件的末尾并截断文件)。
同样有趣的是,收缩在文件系统碎片方面的效果如何(我的猜测不是很好)。
总而言之,我更倾向于压缩,如何执行它的想法(代码)以及如何确定何时需要(执行压缩的标准)。
我看,有BACKUP命令,也许压缩看起来像:1)备份2)重新创建数据库3)从备份恢复?
答案 0 :(得分:3)
LocalDB是SQL Server Express,它是SQL Server。一般SQL Server指南通常也适用于LocalDB,除非您有非常具体的情况。请注意,SQL Server Express(包括LocalDB)对MDF文件大小有额外限制,在SQL Server Express 2012中为10GB。
要记住的一件事是格式设计得快,而不紧凑。例如,一个空数据库将创建一个几MB大的MDF文件。
autogrow
和autoshrink
似乎是管理MDF大小的方法,如果你想尽可能地保持它的话。在this KB 315512 article和this post by Paul Randall, including the discussion in comments中讨论了与绩效相关的权衡。
根据文件系统碎片 - 创建具有足够大文件大小的数据库应该会有所帮助,因为操作系统应该能够在立即询问时更容易找到大的连续块磁盘空间。当数据库文件增长和缩小时,它更有可能在文件系统级别进行分段。我也找到了this post,讨论了如何使用工具"手动"对给定文件进行碎片整理。看起来很有希望,但我还没有测试过。