2

我有多组代码需要在 Access 2007 中运行,我一直在尝试查看是否可以同时运行它们。我需要让我的 Access VBA 代码运行的每组数据大约需要 5-8 小时才能运行。一次运行两个或一次运行它们会导致任何问题吗?

它们都是自包含的,并且不提取外部信息,因此它们尝试同时访问相同的外部信息不会有问题。

编辑:

每个 Access 程序将在 VBA 中运行代码,该代码基本上将存储的设备 (MIU) 的纬度和经度位置与一组网格点进行比较,并将所述网格中的所有 MIU 分组到一个新表中。网格在此过程之后移动并重复,直到达到整个搜索网格的最大纬度和经度。

4

4 回答 4

4

这真的是一个“谁知道?” 类型的问题。如果 5 - 8 小时的进程消耗了大部分 CPU 周期或大部分 RAM,那么在机器上运行两个进程不会提高速度;由于任务切换的原因,它实际上会降低它的性能。

如果这些进程是真正独立的,您可能会考虑让多台机器在数据库的不同副本上工作。这样你就可以扩大规模。

当然,我不确定这个过程是做什么的,所以很难说这是否可行。

于 2009-07-14T14:53:56.430 回答
3

众所周知,我是 Access 的大力推动者。在这种情况下,在我看来 Access 可能不是正确的工具。

但我假设您已经以最合乎逻辑的方式在 Access 中实现了您的流程。例如,如果您可以使用 SQL 更新替换遍历记录集并更新每行中的一个/多个字段,那么这可能会大大提高效率。

需要考虑的一件事是,许多人经常在一组记录进行更新时可能会垂直分割问题并发出有限数量的 SQL 语句(每列一个)。例如,当您尝试在两个都已更新的相同表之间同步数据时。编写逐列运行的动态 SQL 更新比逐行遍历和逐字段更新要高效得多。

这种重新设计的性能改进可能超过一个数量级。

于 2009-07-14T23:58:36.043 回答
0

如果您指的是 2 个不同的 Access实例,那么这将更多地取决于您在做什么以及计算机的容量(RAM 和处理器速度,处理器数量)。

我发现如果我正在导入大量数据并将焦点从访问上移开,当我尝试切换回应用程序时可能会停止响应。

您可以随时尝试运行测试...

当我有大量工作要运行时,我会在我们的 Citrix 服务器上进行。

运行进度表是个好主意,这样您就可以检查进度。

于 2009-07-14T14:50:48.277 回答
0

我发现从 .CMD 文件并行启动 MS Access:

启动 db1.accdb /x 宏 1 启动 db2.accdb /x 宏 2 启动 db3.accdb /x 宏 3 启动 db4.accdb /x 宏4

有问题。MS 给出了启动所有 4 个 DB 并在完成时关闭的外观。这些过程是完全独立的,可以查看不同的数据库。问题是 MS 会在没有警告的情况下提前关闭一个(为结果集添加了更新时间戳以进行验证)。也许有一种方法可以隔离内存空间?

于 2016-08-30T13:35:04.010 回答