1

データを含むテーブルのみを含む50MBまでのAccess2000-2003データベース(MDBファイル)が複数あります。データデータベースは、私の企業のサーバー上にあり、応答に最大1〜2秒かかる場合があります(ファイルエクスプローラーで参照しているときに実際に50 MDBファイルを手動で開くには約10秒かかります)。フォームのみを含む他のデータベースがあります。これらのフォームのほとんど-データベース(まだMDBファイル)は、バッチファイルで実行する前に、実際にサーバーからクライアントにコピーされます(いくつかのテストの後、実行はよりスムーズに見えます)。これらのフォームデータベースのほとんどは、テーブルリンクを使用してデータデータベースからデータをフェッチします。

さて、私の質問は次のとおりです。最大50MBのデータベースのすべてのデータデータベースをマージして1つの大きなデータベース(たとえば500MB)を作成することには、長所と短所がありますか?遅くなりますか?これらのさまざまなデータベースすべてに接続する必要がなく、500 MBはそれほど多くないと思う場合は、実際にコードをクリーンアップするのに役立ちますが、実際にAccessに慣れているふりをすることはありません。なぜ私が尋ねているのか。Accessが特定のテーブルからデータを取得するためにMDBファイル全体を読み取る必要がある場合は、速度が低下します。Microsoftからはそれほど驚くことではありませんが、これまでのところ、MSAccessデータベースのパフォーマンスには満足しています。

同時にデータベースに接続する人が50人を超えることは決してありません(おそらく、この数は実際には10人を超えることはありませんが、念のためここでは少し控えめにすることをお勧めします)。

4

2 に答える 2

1

dbエンジンは、特定のテーブルから情報を取得するためにMDBファイル全体を読み取ることはありません。システムテーブル(名前がMSysで始まる非表示のテーブル)から情報を読み取って、必要なデータが保存されている場所を特定する必要があります。さらに、クエリを使用してテーブルから情報を取得していて、dbエンジンがインデックスを使用してクエリのWHERE句を満たす行を判別できる場合、テーブルからそれらの行のみを読み取ることができます。

ただし、ネットワークのパフォーマンスに問題があります。それらが接続の切断につながる場合、MDBが破損するリスクがあります。そのため、Accessはワイドエリアネットワークやワイヤレス接続での使用には適していません。また、有線LANでも、ネットワークが不安定な場合にこのような問題が発生する可能性があります。

したがって、ネットワークを介してプルするデータの量を減らすことは良いことですが、不安定なネットワークでのアクセスに対する最善の救済策ではありません。代わりに、接続が切断されてもデータを安全に保つことができるように、データをクライアントサーバーデータベースに移行する必要があります。

于 2012-12-14T14:44:52.153 に答える
1

あなたはここで薄い氷の上を歩いています。
Accessはシナリオを処理しますが、実際にはそれほど多くの同時接続を許可することを意図したものではありません。
大きなデータベース(500MB)にすべてをマージすることは、賢明な方法ではありません。
ネットワーク上の場所から開こうとしましたか?

私が提案できる限り、バックエンドのSqlServer Expressを使用して、単一の実際のクライアントサーバーデータベース内のすべてのテーブルをマージします。
クライアントmdbフロントエンドに必要な変更は、あまり広範に行われるべきではありません。

于 2012-12-14T14:14:58.870 に答える