可以将.MDB文件拆分成段有助于稳定吗?

时间:2010-05-07 06:59:39

标签: ms-access database-design split

这是解决与较大.mdb个文件相关的问题的现实解决方案:

  • 将大.mdb文件拆分为 较小的.mdb个文件
  • 有一个'中央'.mdb包含 链接到较小的表格 .mdb个文件

.mdb支持的VB应用程序进行此更改有多容易?

是否可以对数据库进行更改,以便前端应用程序不需要进行任何更改?

4 个答案:

答案 0 :(得分:4)

编辑开始
简短的回答是“不,它不会解决大型数据库的问题。”

您可以通过使用此技巧克服数据库大小限制(~2GB),但我从未测试过它。

通常,对于大型MS Access数据库,您会遇到速度和数据损坏问题。

速度
这对速度有帮助吗?您仍然拥有相同数量的数据来查询和搜索,以及相同的算法。所以你要做的就是增加每个查询打开多个文件的开销。所以我希望它会慢一些。

您可以通过减少从磁盘中获取信息所需的时间来加快速度。您可以通过以下几种方式实现此目的:

  1. 更快的驱动器
  2. 将MDB放在RAID上(传闻上RAID-1,0可能更快)
  3. 将MDB(按照您的建议)拆分为多个MDB,并将它们放在不同的驱动器上(甚至可能是单独的控制器)。
  4. (这在实践与理论上的效果如何,我不能告诉你 - 如果我做了那么多工作,我仍然会选择切换数据库引擎)

    数据损坏
    MS Access在数据损坏方面享有当之无愧的声誉。公平地说,我有一段时间没有发生过这件事。这可能是因为我学会了不要把它用于任何大事;或者可能是因为MS在尝试解决这些问题方面付出了很多努力;或者更可能是两者的结合。

    数据损坏的主要原因是:

    1. 硬件:例如,宇宙射线,电子干扰,iffy驱动器,iffy内存和iffy CPU - 我怀疑MS Access没有像其他数据库那样出色的错误处理/纠正。
    2. 网络:饱和网络上的大量冲突可能会混淆MS Access并说服它加密重要记录;可以次优地实现网络协议。 TCP / IP很好,但它不是无敌的。
    3. 软件:正如我所说,MS多年来在MS Access上做了很多工作,如果你不是最新的补丁(MS Office和操作系统),请及时更新。问题通常发生在你达到2GB限制等极端情况时(有些错误难以测试,并且除了在边缘情况下不会显示自己,这使得不太可能被看到或纠正,除非有动机的用户报告MS)。
    4. 所有这些都因较大的数据库而恶化,因为较大的数据库通常拥有更多的用户和更多的工作站来访问它。总而言之,较大的数据库和用户数量相乘,以便为腐败提供更多机会。

      修改结束

      您最好的选择是切换到MS SQL Server之类的东西。您可以首先迁移数据,然后将一个MDB链接到它。您可以获得SQL服务器的稳定性,并且大多数(如果不是所有)代码仍然有效。

      完成后,您可以开始将VB应用程序迁移到我们的SQL Server。

答案 1 :(得分:2)

如果您拥有的数据多于单个MDB中的数据,那么您应该获得不同的数据库引擎。

您应该考虑的一个主要问题是您无法在存储在不同MDB中的表之间强制实施参照完整性。这应该是任何实际数据库的显示阻止。

如果不是,那么您可能首先没有设计合适的架构。

答案 2 :(得分:1)

由于CodeSlave更充分解释的原因,答案是否,您应该切换到适当的关系数据库。

我想补充一点,这不一定是SQL Server。很可能你不愿意这样做的原因之一就是费用,如果你不在教育或慈善组织(当它非常便宜,然后通常是完全没脑子的话),获取和部署SQL Server是相当昂贵的。

我最近将Access系统从MDB迁移到MySQL的效果非常好。至少有95%的代码在没有修改的情况下运行,其余5%的代码最简单,只有少数几个需要付出巨大努力的有限区域。如果你有邋code的代码(没有关闭连接或释放对象),那么你需要解决这些问题,但通常我非常惊讶这种方法是多么无痛。当然,我强烈建议,如果您不愿意转移到数据库后端的原因是成本之一,那么您不应该尝试操作.mdb文件而是转而使用更强大的数据库解决方案。

答案 3 :(得分:0)

嗯,如果数据通过这个中央数据库,那么仍然会有一个瓶颈。我能想到你为什么要这样做的唯一原因是绕过访问mdb文件的大小限制。

如果业务功能可以在单独的应用程序中拆分,那么对于包含所有链接表的中央数据库来说,这可能是一个很好的选择,以便进行报告。我之前使用过这个效果很好