我有多个~50MB Access 2000-2003数据库(MDB文件),它们只包含带数据的表。 数据数据库位于我企业的服务器上,可能需要1-2秒才能响应(在文件浏览器中浏览时,手动实际打开50个MDB文件大约需要10秒)。我有其他只包含表单的数据库。在使用批处理文件执行之前,大多数 forms-database (仍然是MDB文件)实际上是从服务器复制到客户端(经过一些测试,执行看起来更平滑)。大多数 forms-databases 使用表链接从数据库中获取数据。
现在,我的问题是:将〜50MB数据库中的所有数据库合并成一个大数据库(比方说500MB)是否有任何优势/劣势?会慢吗?如果我不必连接到所有这些不同的数据库并且我认为500MB不是很多,它实际上有助于清理我的代码,但我并不假装真正习惯于以任何方式访问,这是我为什么这么问。如果Access需要读取整个MDB文件以从特定表中获取数据,那么它会更慢。这对微软来说并不是那么令人惊讶,但到目前为止我对MS Access数据库性能表示满意。
同时连接数据库的人数绝不会超过50人(最有可能的是,这个数字实际上不会超过10,但我更喜欢这里有点保守)
答案 0 :(得分:1)
你在这里走在薄冰上 Access将处理您的场景,但实际上并不意味着允许这么多并发连接 合并大型数据库(500mb)中的所有内容并非明智之举 您是否尝试从网络位置打开它?
据我所知,我将使用后端SqlServer Express将所有表合并到一个真实的客户端 - 服务器数据库中。
客户端mdb前端所需的更改不应该非常普遍。
答案 1 :(得分:1)
db引擎不读取整个MDB文件以从特定表中获取信息。它必须从系统表(名称以MSys开头的隐藏表)中读取信息,以确定存储所需数据的位置。此外,如果您使用查询从表中检索信息,并且数据库引擎可以使用索引来确定哪些行满足查询的WHERE
子句,则它可能只读取表中的那些行。
但是,您的网络性能存在问题。当这些导致连接断开时,您可能会破坏MDB。这就是Access不适合在广域网或无线连接中使用的原因。即使在有线局域网上,当网络不稳定时,您也会遇到这样的问题。
因此,虽然减少通过网络传输的数据量是一件好事,但它不是片状网络上Access的最佳补救措施。相反,您应该将数据迁移到客户端 - 服务器数据库,以便在连接断开时保持安全。