我们分发使用MS Access .mdb文件的应用程序.有人注意到在MS Access中打开文件后文件大小缩小了很多.这表明该文件是压缩的良好候选者,但我们没有为我们的用户提供这样做的手段.
所以,我的问题是,这有关系吗?我们关心吗?如果我们的用户从不压缩数据库会发生什么坏事?
Nat*_*ate 11
除了使数据库更小外,它还将重新计算表上的索引并对表进行碎片整理,从而加快访问速度.它还会发现数据库中永远不会发生的任何不一致,但可能由于Access中的错误或崩溃而发生.
但它并非完全没有风险 - Access 2007中的一个错误偶尔会在此过程中删除您的数据库.
所以这通常是一件好事,但要配合一个好的备份程序.备份到位后,您还可以从任何"不可恢复的"压缩恢复,并以最少的数据丢失修复问题.
确保定期压缩和修复数据库,尤其是在数据库应用程序频繁更新、删除和插入记录的情况下。这不仅将数据库文件的大小保持在最小 - 这将有助于加快数据库操作和网络通信 - 它还执行数据库内务管理,这对数据的稳定性有更大的好处。但是在压缩数据库之前,请确保对文件进行备份,以防压缩出现问题。
Jet 压缩数据库以重新组织文件中的内容,以便为数据、表或索引分配的每个 4 KB“页面”(对于 Access 95/97 为 2KB)空间位于连续区域中。Jet 从标记为已删除的记录中恢复空间,并按主键顺序重写每个表中的记录,就像聚集索引一样。这将使您的数据库的读/写操作更快。
Jet 还会在压缩期间更新表统计信息。这包括识别每个表中的记录数,这将允许 Jet 使用最佳方法扫描记录,通过使用索引或在记录很少时使用全表扫描。压缩后,运行每个存储的查询,以便 Jet 使用这些更新的表统计信息重新优化它,这可以提高查询性能。
如果需要,Access 2000、2002、2003 和 2007 会将压实与修复操作相结合。修复过程:
1 - 清理不完整的交易
2 - 将系统表中的数据与实际表、查询和索引中的数据进行比较并修复错误
3 - 修复非常简单的数据结构错误,例如丢失指向多页记录的指针(这并不总是成功,这就是为什么“修复”并不总是能保存损坏的 Access 数据库的原因)
4 - 替换有关 VBA 项目结构的缺失信息
5 - 替换打开表单、报告和模块所需的缺失信息
6 - 修复表单、报表和模块中的简单对象结构错误
如果用户从不压缩/修复数据库,可能会发生的坏事是它会因膨胀而变慢,并且可能变得不稳定 - 意味着损坏。