我需要在Access 2007中运行多组代码,并且我一直在尝试查看是否可以同时运行它们。我运行Access VBA代码所需的每组数据大约需要5-8小时才能运行。一次运行两个或一次运行它们会导致任何问题吗?
它们都是自包含的,并且不会提取任何外部信息,因此它们在尝试同时访问相同的外部信息时不会出现问题。
每个Access程序将在VBA中运行代码,其基本上将存储的设备(MIU)的纬度和经度位置与一组网格点进行比较,并将所述网格中的所有MIU分组到新表中。在此过程之后移动网格并重复,直到达到整个搜索网格的最大纬度和经度。
答案 0 :(得分:4)
这真的是“谁知道?”问题的类型。如果5到8小时的过程消耗大部分CPU周期或大部分RAM,那么在盒子上运行两个进程将不会提高速度;由于任务切换原因,它实际上会降低它。
如果这些进程真正独立,您可以考虑让多台计算机在数据库的不同副本上工作。那样你就可以扩展了。
当然,我不确定这个过程是做什么的,因此很难说这是否可行。
答案 1 :(得分:3)
众所周知,我是Access的重要推动者。在这种情况下,在我看来Access可能不是正确的工具。
但我假设您已经以最合乎逻辑的方式在Access中实现了您的流程。例如,如果您可以使用SQL更新替换步行记录集并使用SQL Update更新每行中的字段/字段,那么这可能会大大提高效率。
要考虑的一件事是,许多人经常走一组记录进行更新,因为他们可能会垂直切片并发出有限数量的SQL语句(每列一个)。例如,当您尝试同步两个已更新的缩进表之间的数据时。编写逐列的动态SQL更新比逐行遍历和逐个字段更新更有效。
这种重新设计的性能提升可能超过一个数量级。
答案 2 :(得分:0)
如果您指的是2个不同的实例,那么这将更多地取决于您正在做什么以及计算机的容量(RAM和处理器速度,处理器数量)。
我发现如果我导入大量数据并将焦点从访问移开,当我尝试切换回应用程序时可能会停止响应。
您可以随时尝试测试...
当我有大量工作要运行时,我会在Citrix服务器上执行此操作。
最好让进度表运行,以便检查进度。
答案 3 :(得分:0)
我发现从.CMD文件并行启动MS Access:
启动db1.accdb / x macro1 启动db2.accdb / x macro2 启动db3.accdb / x macro3 启动db4.accdb / x macro4
有问题。 MS给出了启动所有4个DB并在完成时关闭的外观。这些过程完全独立于不同的数据库。问题是MS会在没有警告的情况下提前关闭一个(为结果集添加更新时间戳以进行验证)。也许有一种方法来隔离内存空间?