7

我有一个 Access 数据库,其中包含有关人员的信息(员工资料和相关信息)。前端有一个类似控制台的界面,一次修改一种类型的数据(例如一种形式的学位,另一种形式的联系信息)。它目前链接到多个后端(每种类型的数据一个,一个用于基本配置文件信息)。所有文件都位于网络共享上,并且许多后端都已加密。

我这样做的原因是我知道 MS Access 必须将整个数据库文件拉到本地计算机才能进行任何查询或更新,然后将任何更改的数据放回网络共享。我的理论是,如果一个人要更改电话号码或地址(联系信息),他们只需要拉/修改/替换联系信息数据库,而不是拉一个包含联系信息、项目、学位、奖项的大型数据库等,只需更改一个电话号码,从而减少多个用户访问数据时锁定数据库和网络流量的可能性。

这是一个理智的结论吗?我误解了很多吗?我还缺少其他东西吗?

我意识到每个文件都会考虑开销,但我不知道影响有多大。如果我要整合后端,还有一个潜在的好处是能够让 Access 处理级联删除等的参照完整性,而不是为此编码......

我会很感激任何想法或(合理有效的)批评。

4

2 回答 2

9

这是一个常见的误解:

MS Access 必须将整个数据库文件拉到本地计算机才能进行任何查询或更新

考虑这个查询:

SELECT first_name, last_name
FROM Employees
WHERE EmpID = 27;

如果 EmpID 被索引,数据库引擎将读取足够的索引以查找匹配的表行,然后读取匹配的行。如果索引包含唯一约束(例如 EmpID 是主键),则读取速度会更快。数据库引擎不会读取整个表,甚至不会读取整个索引。

如果没有 EmpID 索引,引擎将对Employees 表进行全表扫描——这意味着它必须读取表中的每一行以确定哪些包含匹配的 EmpID 值。

但无论哪种方式,引擎都不需要读取整个数据库......客户、库存、销售等表......它没有理由读取所有这些数据。

您是正确的,连接到后端数据库文件存在开销。引擎必须为每个数据库管理一个锁文件。我不知道这种影响的程度。如果是我,我会创建一个新的后端数据库并从其他数据库导入表。然后复制前端并重新链接到后端表。这将使您有机会直接检查性能影响。

在我看来,关系完整性应该是将表合并到单个后端的有力论据。

关于锁定,您永远不需要为例行 DML(INSERT、UPDATE、DELETE)操作锁定整个后端数据库。数据库基础引擎支持更细粒度的锁定。同样悲观与机会锁定 --- 锁定是在您开始编辑行时发生还是延迟到您保存更改的行。

实际上,如果慢速意味着无线网络,“慢速网络”可能是最大的担忧。只有在硬连线 LAN 上访问才是安全的。

编辑:访问不适用于 WAN 网络环境。请参阅Albert D. Kallal 的此页面

于 2011-04-29T14:51:36.493 回答
0

ms access不适合在局域网和广域网中使用,速度肯定较低。解决方案是使用客户端服务器数据库,例如 Ms SQL Server 或 MySQL。Ms SQL Server 比 My SQL 好得多,但它不是免费的。考虑用于大型项目的 Ms SQL server。我再次说 MS 访问仅适用于 1 台计算机而不适用于计算机网络。

于 2018-08-22T01:38:01.407 回答