- 締切済み
重くなってしまったアクセスを軽くする方法
アクセス2000で社内のデータ-ベースを作っています。 ようやくデータ-ベースが完成したので、データーベース分割ツールを使ってデーターベースをテーブルデータと、フォーム等に分割し、テーブルデータを社内のランのサーバーに置き、クエリ、フォーム及びレポートを各パソコンにコピーして皆で使えるようにしました。 とりあえず、動くのですが、動きが非常に重いんです。これは、どうすれば軽くなるのでしょうか?
- みんなの回答 (3)
- 専門家の回答
みんなの回答
他の皆さんのおっしゃっている通り、AccessでC/S(厳密には違いますが)を構築しようとするとパフォーマンスは悪くなります。2000では97と比べるとマシにはなっているような気がしますが、それでも2台以上になると若干落ちてきますよね。 何台くらいで同時使用されているのでしょう? 自分の場合は5台がMaxですね。それ以上の場合はSQL-Serverにしています。特に2000からはAccessとSQL Serverの親和性がいいので(多少は癖がありますが)プロジェクトを使用しています。 分割ツールを使ったっていうことはひょっとして全てのフォームやレポートがサーバー側のテーブルに連結しているのでしょうか?だとしたら危険ですので、データ入力用のフォームくらいは、クライアント側に同じ構造のワークテーブルを置いてそれを編集して、サーバー側に書き込む処理にした方が安全です。ロックのチェックも利きますし。 ARCさんがおっしゃっているようにLANに流れるデータ量を工夫すればかなりいいです。Accessとは関係ないですが、Windows2000 Serverをお使いなら、ターミナルサービスを利用するのも手かもしれません。
- ARC
- ベストアンサー率46% (643/1383)
要はLANの中に大量のデータが流れるからイカンのです。 例えば、フォームのレコードソースにテーブル名や、複数のレコードを返すクエリを指定していませんか? フォームのレコードソースに、レコードを1件だけ返すSQLを書き、「次」ボタンで次のレコードを返すSQLをレコードソースに設定する、などとすると、ずいぶんと改善できます。 とにかく余計なデータをLANに流さない! ってことを念頭において開発するとそれなりに速度を稼げます。(それでも、データが溜まってくると遅くはなりますが・・・) 他には、内容が変化しないテーブルは積極的にクライアント側(フォーム等が格納されているDB)に置くようにします。 他にも色々と高速化のテクニックはあるのですが、こっから先は企業ヒミツ(^^;
- Haizy
- ベストアンサー率40% (404/988)
★DBのデータがサーバ(ネットワーク回線の向う側)になるので、通信回線レベルまで速度が落ちます。10BASEだと、かなりストレスが来ます。これは仕方が無い事だと思います。LANの構成を見直してください(ダムHUBをS-HUBにする、1000BASEへ移行等、物理的対策になります) ★アクセスは、排他制御がイイカゲンなので、良く30~50分待たされたりします。(笑) サーバがあるのでしたら、SQLServerや、ORACLEの方が良いのは事実ですが、難易度は跳ね上がります。 ★ちょくちょく更新すると、トランザクションが溜まって、遅くなります 気休めかもしれませんが、アクセスのDBの最適化を行ってはどうでしょうか? ●DBの最適化 サーバで、Accessを起動。DBを呼び出す。 (このとき、クライアントからアクセスしないほうが良い。) ツール - データベースユーティリティー - 最適化/修復 から、できます。