我使用JDBC-ODBC驱动程序将数据插入到MS Access数据库中。空的mdb文件为2KB。填充此数据库后,大小增长到155MB。然后我删除了数据。但是我发现mdb的大小仍然是155MB。我没有得到任何错误。但是这样正常吗?我预计文件大小会减小。如果是这样设计的,背后的理念是什么?谢谢
发布于 2008-10-01 05:32:10
在压缩数据库之前,MS Access不会回收用于记录的空间。
这是你应该对access数据库做的事情,作为你日常维护的一部分,否则你将会遇到一些非常痛苦的问题。
您可以通过MS Access UI (工具->数据库实用程序->
压缩和修复数据库),您可以使用以下命令提示符:
msaccess.exe "target database.accdb" /compact 注意: /Compact开关必须在目标数据库之后
发布于 2008-10-01 05:30:42
MS Access不会释放记录使用的空间,即使它们被删除后也是如此。您可以在需要时手动释放空间,也可以在每次关闭应用程序时自动释放。
要手动执行此操作,请使用压缩和修复实用程序:
要在关闭应用程序时自动执行此操作:
在删除数据并压缩数据库之后,如果仍然大于100KB,请不要惊讶。在第一次添加数据后,有一定的开销是无法消除的。
另外,请注意,在压缩过程之后,AutoNumber字段值的行为与通告的不同:根据MS Access 2000文档,如果从包含AutoNumber字段的表的末尾删除记录,则压缩数据库将重置AutoNumber值。因此,您添加的下一条记录的AutoNumber值将比表中最后一条未删除记录的AutoNumber值大1。
我发现情况并非如此:如果您有100条自动编号的记录并删除了最后50条,则下一条AutoNumber记录(根据文档)应该编号为"51“。但在我的经验中,它被编号为"101“。
发布于 2011-05-22 19:14:08
正如前面提到的,第一步应该是尝试压缩/修复数据库。但是,您也可以通过创建一个新数据库并从旧数据库导入所有对象来节省一些大小。
https://stackoverflow.com/questions/156331
复制相似问题