access2000でデータベース構築しているんですが、データの量が大変多くなりそうなので、かつパソコンのメモリがあまりよろしくないので、できる限り消費メモリを小さくしたいので何かいい方法があれば教えてください。
VCLを使用しないか、VCLに付属のメモリマネージャを自前で用意するかでしょう。
通常、スワップメモリが発生するだけですので、(コーディングでなく)PCの設定でうまくスワップ効率をあげるという手もあります。
プログラミングの仕方、目的のアプリの仕様にもよりますが、データベース対応コンポーネントを使うのであれば、メモリ使用量を気にする必要はないと思います。
例えば、TDBGirdでデータを一覧表示する場合、表示に必要なレコードしかメモリに読み込まないようになっているようです。(TStringGridなどで表示しようすると結果的すべてのレコードをメモリに読み込むことになるので大量のメモリを消費してしまいますが...)
それよりもTQueryで複雑な問い合せを実行する場合に多くのメモリを消費するようです。(実際、メモリを消費するのは、アプリ側ではなくデータベースエンジンの方です。)
メモリ消費を抑えるには、TQueryで複雑なSQLを実行しないようにし、できるだけTQueryの代わりにTTableを使うようにするのが効果的だと思います。
にしのさん・masayanさん解答ありがとうございます。
ただ初心者なのでなかなか分かったようで分かってません。。
効果的なデータベース作りにはやはりメモリをあまり消費しないほうがいいという風に言われてやってるんですが何かメモリの消費量を確認できるような操作はないでしょうか??
メモリの使用量確認の簡単な方法は、タスクマネージャですね。
Vectorなどでメモリ使用量をモニタできるツールを使うとよいです。
メモリを消費しない方がよいのは、DBだけでなく全てのプログラミングにおいて、ですよ。
速度を落とせば、メモリ消費量は少なく済みます。
逆に、メモリを多く使えば、速度アップが図れます。
# 全てのケースではありません。
DBも、速度を求めるのであれば、ディスクにある数メガ〜数ギガのデータを、メモリに展開しておけば、ディスクアクセス速度に比べて圧倒的にメモリアクセス速度の方が早いですよね。
その代わり、物理メモリも数ギガバイト以上必要になるでしょう。
ちょっと大げさですが。
masayanさんの、
> メモリ消費を抑えるには、TQueryで複雑なSQLを実行しないようにし、できるだけTQueryの代わりにTTableを使うようにするのが効果的だと思います。
に関連することですが、2階層か、3階層のアプリで構成すれば、メモリやCPUの分散になります。
要は、クライアント・サーバ系です。
漠然と”メモリをあまり消費しないほうがいい”と言われるのは困りますね。
時間的に余裕があるのであれば、プロトタイプ(試作/テストプログラム)を作られてみてはどうでしょうか?
メインとなるプログラムもしくは一番たいへんそうなデータベース処理の部分を大雑把に作ってタスクマネージャなどでどのぐらいメモリを消費するか調べてみるのが一番です。
またまた回答ありがとうございました。
タスクマネージャを使って調べて見ます。
いろいろとテーブルやクエリーを変えてどれだけ減らせれるかがんばってみます。
ツイート | ![]() |