Ms access 如何减少access文件不断增长的大小?

Ms access 如何减少access文件不断增长的大小?,ms-access,optimization,filesize,Ms Access,Optimization,Filesize,因此,在我的工作场所,他们有一个巨大的access文件(与MS access 2003和2007一起使用)。文件大小约为1.2GB,因此打开文件需要一段时间。我们不能删除任何记录,我们有大约100多个表(每个月我们再创建4个表,不问!)。如何改进这一点,即缩小文件大小 你可以做两件事: 使用链接表 每隔一段时间“压缩”数据库一次 链接表本身不会限制数据库的总体大小,但会将其“打包”到更小、更易于管理的文件中。注意这一点: 'File' menu + 'Get External data' +

因此,在我的工作场所,他们有一个巨大的access文件(与MS access 2003和2007一起使用)。文件大小约为1.2GB,因此打开文件需要一段时间。我们不能删除任何记录,我们有大约100多个表(每个月我们再创建4个表,不问!)。如何改进这一点,即缩小文件大小

你可以做两件事:

  • 使用链接表
  • 每隔一段时间“压缩”数据库一次
链接表本身不会限制数据库的总体大小,但会将其“打包”到更小、更易于管理的文件中。注意这一点:

'File' menu + 'Get External data' + 'Linked tables' “文件”菜单+“获取外部数据”+“链接表” 链接表还有许多优点,例如允许保留数据子集的多个版本,以及通过链接表管理器选择特定的集合

压缩数据库可以回收在各种CRUD操作(插入、删除、更新…)使存储碎片化时丢失的空间。它还可以重新组合表和索引,使搜索更加高效。这件事就这样结束了

'Tools' menu + 'Database Utilities' + 'Compact and Repair Database...' “工具”菜单+“数据库实用程序”+“压缩和修复数据库…”
您应该认真考虑您的数据库体系结构。如果表之间没有任何链接,您可以尝试将其中一些表移动到另一个数据库(每年一个数据库:)作为短期解决方案。

您真的在挑战MS访问的限制-您是否知道该文件的大小不能超过2GB

我想您已经检查了数据,是否可以通过额外的规范化来节省空间?您可以将前几个月的一些表“归档”到单独的MDB文件中,然后将它们(永久地或根据需要)链接到您的“当前”数据库(在这种情况下,您实际上可以从每月启动新表的错误决策中获益)


但是,有了这么多的数据,也许是时候开始计划转移到更广阔的平台了。

好吧。。听@Larry的,记住,从长远来看,你必须找到另一个数据库来保存你的数据

但在短期内,我对“每月4张新桌子”的事情感到非常不安。每月4张表,每年50张。。。对于这里的每一位“数据库管理员”来说,这听起来都很奇怪。所以,请告诉我们:有多少行,它们是如何构建的,它们的用途是什么,以及为什么每个月都要构建表


根据您对数据的处理方式,您还可以考虑将一些表归档为XML文件(甚至XLS?)。这对于不必通过关系、视图等访问的“历史”数据是有意义的。从PABX收集的电话列表就是一个很好的例子。数据可以通过ADODB记录集或transferDatabase方法保存为XML/XLS文件或从XML/XLS文件中加载:每个月添加更多的表:这已经是一个值得怀疑的态度,对于数据规范化似乎是可疑的。
如果您这样做,我怀疑您的数据库结构在字段大小、数据类型和索引方面也是次优的。我真的会从仔细检查这些开始

如果您真的有理由使用月表(我也无法想象),为什么每月不使用一个后端?
您还可以在主后端安装一个数据库,比如说,3个月的在线数据,然后是一个存档数据库,您可以在其中传输旧记录。

我将其用于事务,主表有大约650.000条记录,并且访问响应非常迅速

一些“抓住稻草”的想法

查看每列的数据类型,您可能能够将一些数字存储为字节,从而为每条记录节省少量数据

看看索引,去掉那些你不用的。在大型表上,不必要的索引会增加大量开销


我想+2^64关于数据库设计的建议有点奇怪,但是没有什么没有说的,所以我不会重复这一点,我收回它,每个月我们创建约20个表。别问我这不是我设计的!你也许应该重新设计它?事情一团糟,更不用说代码了。至少有几千行代码,绝对没有注释。整个事情对我来说太疯狂了,我甚至都不想重新设计……如果你不想重新设计,就把它转包出去@aZn137压缩数据库后缺少大小缩减可能是由于过度碎片化的表(我已经看到了这一点)造成的,也可能是由于数据库生命周期中的CRUD操作没有产生大量碎片造成的。将数据重新加载到一个全新的数据库(可能还有单独的数据库,cf链接表)可能是“修复”一个本来“不可压缩”的数据库的唯一方法。如果只是为了防止打字错误和其他人为事故,更不用说MS Access“爆炸”。如果db是您在引用完整性问题中提到的db,我并不奇怪您有问题。它的设计一团糟。我尝试分割数据库,这件事花了将近2个小时,然后给了我一个错误,“超过最大计数锁”或一些垃圾…你收到的错误消息还应该给你一个帮助链接,带你到如何更改注册表项,允许你做最大数量的锁的说明。对于分割,尝试以下方法:将数据库复制到本地驱动器(并让用户知道它不可用),然后在本地驱动器上以独占模式执行操作。之后,将它复制回服务器。我已尝试修改注册表(使其具有20000个)。这一次,它只是冻结了。没有错误消息,但也没有进展。我检查了,不是4张,而是每月20多张表。同样,不要问。每个月我们都从海量文件导入新数据。然后,该文件将被处理为不同的组,每个组将获得其当月的表格。有些团体有一对夫妇,