2

Access 2007 で実行する必要があるコード セットが複数あり、それらを同時に実行しても問題ないかどうかを確認しようとしています。Access VBA コードを実行するために必要な各データ セットの実行には、約 5 ~ 8 時間かかります。それらを一度に 2 つ実行したり、一度にすべて実行したりすると、問題が発生しますか?

それらはそれぞれ自己完結型であり、外部情報を取得しないため、同じ外部情報に同時にアクセスしようとしても問題はありません。

編集:

各 Access プログラムは、保存されているデバイスの緯度と経度の位置 (MIU) を一連のグリッド ポイントと基本的に比較し、そのグリッド内のすべての MIU を新しいテーブルにグループ化する VBA でコードを実行します。このプロセスの後、グリッドはシフトされ、検索グリッド全体の最大緯度と経度に達するまで繰り返されます。

4

4 に答える 4

4

これは本当に「誰が知っている?」です。質問の種類。5 ~ 8 時間のプロセスがほとんどの CPU サイクルまたはほとんどの RAM を消費している場合、ボックスで 2 つのプロセスを実行しても速度は向上しません。タスク切り替えの理由により、実際にはパフォーマンスが低下します。

これらのプロセスが完全に独立している場合は、データベースの異なるコピーで複数のマシンを動作させることを検討できます。そうすれば、スケールアウトできます。

もちろん、そのプロセスが何をするのかはよくわからないので、これが実行可能かどうかはわかりません。

于 2009-07-14T14:53:56.430 に答える
3

多くの人が知っているように、私は Access の熱心な推進者です。この場合、Access はおそらく適切なツールではないように思えます。

ただし、可能な限り最も論理的な方法でプロセスを Access に実装したと仮定しています。たとえば、レコードセットのウォークと各行のフィールドの更新を SQL Update に置き換えることができれば、はるかに効率的です。

考慮すべきことの 1 つは、問題を垂直方向にスライスし、限られた数の SQL ステートメント (列ごとに 1 つ) を発行できる場合でも、多くの人が一連のレコードをたどって更新を行うことが多いということです。この例は、両方とも更新された 2 つの同一テーブル間でデータを同期しようとしている場合です。行ごとに移動し、フィールドごとに更新するよりも、列ごとに移動するオンザフライの SQL 更新を作成する方がはるかに効率的です。

このような再設計によるパフォーマンスの向上は、1 桁以上になる可能性があります。

于 2009-07-14T23:58:36.043 に答える
0

.CMD ファイルから MS Access を並行して開始することがわかりました。

db1.accdb を開始 /x マクロ 1 db2.accdb を開始 /x マクロ 2 db3.accdb を開始 /x マクロ 3 db4.accdb を開始 /x マクロ 4

問題あり。MS は、4 つの DB をすべて開始し、完了すると終了するように見えます。これらのプロセスは、異なるデータベースを見ると完全に独立しています。問題は、MS が警告なしに時期尚早に 1 つを閉じることです (検証のために結果セットに更新タイムスタンプを追加しました)。おそらく、メモリ空間を分離する方法はありますか?

于 2016-08-30T13:35:04.010 に答える
0

Access の 2 つの異なるインスタンスを意味する場合、これは、実行していることとコンピューターの容量 (RAM とプロセッサの速度、プロセッサの数) によって異なります。

大量のデータをインポートしていて、フォーカスをアクセスから遠ざけると、元に戻そうとすると、アプリケーションが応答しなくなることがあります。

いつでも試運転で試すことができます...

大規模なジョブを実行する場合は、Citrix サーバーで実行します。

進行状況を確認できるように、進行状況メーターを実行しておくことをお勧めします。

于 2009-07-14T14:50:48.277 に答える