因此,在我的工作场所,他们有一个巨大的访问文件(与 MS Access 2003 和 2007 一起使用)。文件大小约为1.2GB,因此打开文件需要一段时间。我们无法删除任何记录,并且我们有大约 100 多个表(每个月我们会再创建 4 个表,不要问!)。我该如何改善这一点,即缩小文件?
6 回答
你可以做两件事:
- 使用链接表
- 每隔一段时间“压缩”数据库
链接表本身不会限制数据库的整体大小,但会将其“打包”在更小、更易于管理的文件中。要对此进行调查:
“文件”菜单+“获取外部数据”+“链接表”
链接表还具有许多优点,例如允许保留多个版本的数据子集,以及通过链接表管理器选择特定集合。
压缩数据库可以回收空间,否则会因为各种 CRUD 操作(插入、删除、更新...)对存储进行碎片化而丢失。它还重新组合表和索引,使搜索更有效。这是用
“工具”菜单+“数据库实用程序”+“压缩和修复数据库...”
你真的在挑战 MS Access 的限制——你知道文件不能增长到超过 2GB 吗?
我想您已经通过额外的标准化检查了可能节省空间的数据?您可以将前几个月的一些表“存档”到单独的 MDB 文件中,然后将它们(永久或根据需要)链接到您的“当前”数据库(在这种情况下,您实际上会从可能是一个错误的决定中受益开始每个月的新表)。
但是,有了这么多的数据,可能是时候开始计划迁移到更宽敞的平台了。
您应该真正考虑一下您的数据库架构。如果表之间没有任何链接,您可以尝试将其中一些移动到另一个数据库(每年一个 db :) 作为短期解决方案。
几个“抓住稻草”的想法
查看每列的数据类型,您可能可以将一些数字存储为字节,从而为每条记录节省少量
查看索引并删除您不使用的索引。在大表上,不必要的索引会增加大量开销。
我会 + 2^64 关于数据库设计的建议有点奇怪,但没有什么还没有说过,所以我不会强调这一点
好吧.. 听听@Larry,并记住,从长远来看,您必须找到另一个数据库来保存您的数据!
但在短期内,我对这个“每月 4 个新表”的事情感到非常不安。每月 4 个表是每年 50 个......这对于这里的每个“数据库管理员”来说肯定听起来很奇怪。所以请告诉我们:有多少行,它们是如何构建的,它们是做什么用的,为什么每个月都必须构建表?
根据您对数据的处理方式,您还可以考虑将一些表归档为 XML 文件(甚至是 XLS?)。这对于不必通过关系、视图等访问的“历史”数据是有意义的。一个很好的例子是从 PABX 收集的电话列表。可以通过 ADODB 记录集或 transferDatabase 方法将数据保存为/从 XML/XLS 文件中加载
每个月添加更多的表:这已经是一个值得怀疑的态度,而且对于数据规范化似乎也很可疑。
如果你这样做,我怀疑你的数据库结构在字段大小、数据类型和索引方面也不是最佳的。我真的会从仔细检查这些开始。
如果您真的有理由使用每月表(我无法再次想象),为什么不每月有 1 个后端?
您还可以在主要后端拥有 3 个月的在线数据,然后是存档数据库,您可以在其中传输旧记录。
我将它用于事务,主表有大约 650.000 条记录,并且 Access 非常敏感。