• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:MSDE ACCESSの処理がサーバとクライアントで処理時間が違う)

MSDE ACCESSの処理時間の違いはなぜ?

このQ&Aのポイント
  • WindowsXP Access2003 MSDEを使用しており、クライアント側とサーバ側で処理時間が異なる問題が発生しています。
  • クライアント側での実行では40分程度で完了する一方、サーバ側では6時間以上かかってしまいます。
  • サーバ側でのタスクマネージャの監視では、CPU占有率やMSACCESS.exeのメモリ使用量に大きな変動はなく、それに対してsqlserber.exeのメモリ使用量が増加していくことが確認されました。なぜサーバ側で遅くなるのか、原因を教えていただきたいです。

質問者が選んだベストアンサー

  • ベストアンサー
  • Bonjin
  • ベストアンサー率43% (418/971)
回答No.1

MSDEはサーバにインストールされていると考えていいのでしょうか? >サーバ側で遅くなる原因はどこにあるのでしょうか 実際どのような処理をしているかわかりませんが、MSDEの最大データ量が2GBに対して処理が40分や6時間かかるのは異常です。プログラムを見直した方が良いのではないでしょうか? 通常はリモートアクセスよりもローカルアクセスの方が通信にかかるオーバーヘッドが少ないので同一処理ならばサーバ側で処理した方が速くなります。 ちなみに何回やっても40分、6時間かかるのでしょうか?

o_w_nakazaki
質問者

お礼

返礼が遅くなってしまい、申し訳ございません。 ご回答いただきありがとうございます。 MSDEはインストール済みです。 バックアップ時の総容量は180M程度です。 また、サーバ環境はPentium4 3.2G、メモリ1G程度のスペックです。 自己解決いたしました。 全件ループするテーブル(38000件*42項目) をADOにてOpen そのうちの25項目ほどを比較対象テーブル(同等数件数、同等数項目) と比較し、1項目でも際があった場合に 差異情報テーブルに新規追加する という流れのプログラムを組んでおります。 このOpenメソッドを使用する際の第3引数(カーソルタイプ)を指定する際に 省略しており、adOpenForwardOnly(前方スクロールタイプ)が規定で設定されておりました。 これをadOpenStatic(静的カーソル)に変更することにより、 クライアント側で実行した時と同等の時間で処理が終了しました。 なお、引数をadOpenKeyset(キーセットカーソル)、adOpenDynamic(動的カーソル)に変更しても ほぼ同等の時間で処理が終了しました。クライアント環境上で実行しても同様です。 明示的にadOpenForwardOnlyを指定したときはサーバ環境上のみ遅い現象が再現されました。 現象発生時、しばらくはCPUもある程度占有してsqlserver.exe,MSACCESS.exe が動いているのですが、 時間が経過するにつれてCPU占有率が0に等しくなるのです。 引数変更後、CPU占有率も常に25%程度とっており、ディスクアクセスも頻繁に行われていました。 動作だけを見るとワークロードガバナが働いたのかな?というふうに見受けられるのですが、 根拠が無い為、何が原因か結局わからない状態です。 プログラムの見直しをご提示いただきましたが、既に客先に収めている為、下手に大きな改修が行い無い旨 ご理解いただければ幸いです。

関連するQ&A