fc2ブログ
FC2 Analyzer

Simple Access

Microsoft Access の備忘録と管理者の不定期日記です。。。

リンクテーブルのパフォーマンス向上策

データ用MDBとクライアント用MDBを分けてクラサバ環境でAccessシステムを運用するケースが多い。
※Accessをクラサバで使用することについての是非はここでは触れない。

簡易システムであれば気にするほどのことでもないパフォーマンス(レスポンス)も、
それなりに作り込んだものになると驚くほどパフォーマンスが低下することがある。
いや、低下する。

現在作成しているシステムが想定外の規模になり、リンクテーブルのパフォーマンス(レスポンス)が
著しく低下したため解決策をネット上で検索してみた。
リンクテーブルを使用しているクエリ内で定義域集合関数等を使わない・・・などの情報があるが、
今回の筆者のケースではほぼ全テーブルがリンクテーブルであるためにどうしようもない。

以下は対処可能と思われる解決策

1.リンクテーブルを開きっぱなしにする。

マルチユーザー環境で使用する場合、リンクテーブルを使用する必要がある処理を行うたびに
ロックファイル(*.ldb)の作成および削除が行われる。
ダミーテーブルをデータ用MDBに作成しておき、クライアント用MDBにこれをリンク。
クライアント用MDBの起動時にOpenRecordsetでこのダミーテーブルを開きっぱなしにすることで
ロックファイルの作成/削除を省くことができるそう。
http://office.microsoft.com/ja-jp/access-help/HP005187453.aspx

2.テーブルのプロパティ(サブデータシート名)を「なし」にする。

Access2000から実装された「サブデータシート」。
テーブル同士のリレーションを設定しておくと、テーブルのデータシートビューを開いた時に
サブデータシートとして連結されたテーブルの内容を表示できるというもの。
通常、普通にテーブルを作成した場合には「サブデータシート名」を意識することはなく、
デフォルトでこのプロパティが「自動」に設定される。
これを「なし」に更新することでサブデータシートの読み込み(?)にかかる負荷が軽減されるらしい。
筆者のケースではユーザーが安易にマスタデータを削除できたりしないようにリレーションが
貼りまくられているため、もしかしたら有用かもしれない。
http://support.microsoft.com/default.aspx?scid=kb;ja;261000&Product=accJPN
関連記事
スポンサーサイト



コメント

コメントの投稿


管理者にだけ表示を許可する

トラックバック

トラックバック URL
http://sevenstar30.blog116.fc2.com/tb.php/36-2e5431ec
この記事にトラックバックする(FC2ブログユーザー)