- ベストアンサー
accessが重たい
質問させていただきます。 access2003を使用しています。 一台のメインPCにaccessのファイルが二種類(仮にAとB)あり、そのファイルを複数でネットワークを通して使用しています。 すべてXPproです。 Aのaccessを3台で使用し、Bのaccessを6台か7台で使用しています。 accessの限度が10台までだと伺ったことがあります。今現在はひとつのデータベースを最大でも7台程度しか使用していません。 ですがここ最近おもむろに重たいのです。作業に支障がでる程度になってきました。 そこで思ったのですが、アクセスの使用限度人数より、一台のメインPCを見に行くPC台数の問題かなと思いました。PCのスペックにもよるのかもしれませんが、困っています。 原因と対策をご相談致したく思います。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
どの程度のデータ量を扱っていらっしゃるのか、 どのような処理をされているのか、 どのようなデータ参照をされておられるのか、 どのようなスペックの機器を使っておられるのか、 (どの程度のスキルがあるのか、予算はかけられるのか、時間はどの程度かけられるのか、、、、、) この辺がまったく見えないので、答えにくいのですが、 あまり期待できないですが)にMDBの最適化をかけてみるべきだと思います。 これの効果がない場合は まず、データ部分と操作部分を切り離してMDBを作るべきだと思います。 クライアント側はリンクテーブルにすると変更ははあまり、手間がかからないと思います。 アクセスは、(私個人的には何度も痛い目にあって、信用できない仲になっているので)複数のクライアントで使うのはお勧めできません。 将来的には他のDBに移すことを考えた方が良いと思います。
その他の回答 (3)
最適化に関してですが2003を使ったことがないのでよくわからないですが、 2000の場合は排他モードで開かないと実行できませんでした。 小さくなっていなかったということは、最適化されていなかったと考えるのが 順当だと思います。 どの処理をするときに遅くなるのかを見極め、その処理をできるだけ 行わないですむ方法を考えるのが良いと思います。 例えば、みんなで同じテーブルを同時に開くから遅いのであれば、 テーブルを開きっぱなしにしない(連結フォームをつかわない) などの工夫をすればよいと思います。 抽出が遅いなら、適正なインデックスを振ることによって速くなることはあります。 データの挿入に関してはインデックスは効果はないと思います。 SQLを書かなくても、非連結フォームよりクエリを使ってデータを操作すれば、 同等かそれ以上の効果が得られると思います。
リンクテーブルのあとの方向性としては、 テーブルやクエリに連結したフォームを使わずに、 データ抽出や、登録を行う際はADOなどを使って SQLを発行するという形に持っていけばそれなりに 動くようになると思います。 他のdbに変更するときもクライアント側は少ない改造 ですむ可能性もあります。 dbに関しては、何でもいいと思います。 このごろはほとんどのdbで、評価版やただバージョンが 出ています。 業務での使用に関してや、接続クライアント数、 メモリ容量などに制限がある場合もあります。 テスト環境で 使用できても、実務で利用できなかったりすると面倒ですので、 よく調べてみてください。
お礼
リンクを作成している段階でADOを知りました。 手は付けていなかったのですが、着手してみようと思います。まだ勝手もわかっていませんが^^; accessが果たしてどこまで使えるのか?使用キャパは?いろいろと不安がありますが、多いときで10万件以上の個人データを扱っているので、出来る限りのことはしたいと思っています。まだ設立して間もなく、専門部署もないので、知識量の浅い自分がどこまでできるか不安はずっとあります。 あ、質問の重複申し訳ないのですが、DBがネットワーク上にある状態で最適化をしてました。最近そのDBをデスクトップに落として最適化をしてみたのですが、今までとは見違えるほど処理速度が上がりました。160kが70kまで落ちました。今までやり方を間違えていたのでしょうか?
- gatt_mk
- ベストアンサー率29% (356/1220)
>一台のメインPCにaccessのファイルが二種類(仮にAとB)あり、そのファイルを複数でネットワークを通して使用しています。 まさか1台のパソコンにMDBを置いてファイル共有で複数台から開いているのではないでしょうね? そのような使い方をするとかなりの確率で壊れます。 共有する場合にはデータが保存されているMDBとプログラム部分のMDBに分け、データ部のMDBを1カ所のパソコンの保存して共有し、プログラム部のMDBを各パソコンに入れ、テーブルをリンクする形で利用するのが一般的です。 後は保存されているデータ量や利用している各クライアントPCのスペックによって速度は変わります。CPUの性能にもよりますが、XPproなら数万件のデータを512MB程度のパソコンで検索したらそれほどの速度は出ないでしょう。
お礼
おっしゃるとおりです。 前任者から受け継いだ状態でそうでした。 ちょっと作ってみたのですが。 入力フォームのみのldbファイルを作り各PCに配布、mdbからテーブルをリンクする方法で作りました。まだテスト段階なので実装はしていませんが。少しずつなので怖いんですよ。実装が。 配布したldbの方は、多数で使用するので、個人情報の関係でテーブルなどを閲覧されたくないのです。メニュー画面から入力フォームを開く時にテーブルをリンクし、入力フォームを閉じるときにテーブルのリンクを削除するようなプログラムです。たしか。 やっぱり早急に取り掛からないとやばそうですね。。
お礼
まず自分のスキルですが、初心者に限りなく近いです。 前任者から受け継ぎ、参考資料を読みながら管理しています。 データ量は、氏名、住所、電話番号など、個人情報が2万程度入っています。 処理は、とにかく入力フォームがあり、貯蓄されるテーブルがあるだです。コンボで抽出したり、フォームが開くときに入力者の書き込みを求めたりはしてますが、とてもシンプルだと思います。 最適化は終えています。変わりはなかったですね。 >データ部分と操作部分を切り離して 今思索で作ったものはありますが、まだ実証するのは怖いので、テストしてる段階です。 ほかのDBも探していますが、おすすめなどありますでしょうか?あまりにも難しいものは自身がないです。