0

データベースでクエリを実行するプロジェクトに取り組んでおり、結果がメモリ サイズを超えています。メモリ プール ライブラリについて聞いたことがありますが、それがこの問題の最善の解決策であるかどうかはわかりません。
メモリ プール ライブラリは、ディスクからの書き込みと読み取りをサポートしていますか (何度も解析する必要があるクエリの結果として)。これを達成する他の方法もありますか?

PS
私はMySQLデータベースとそのC APIを使用してデータベースにアクセスしています。

EDIT : ここに例を示します:
5 つのテーブルがあり、それぞれに 100 万行あるとします。あるテーブルが別のテーブルとどの程度類似しているかを調べたいので、テーブルごとにブルーム フィルターを作成し、残りの 4 つのテーブルのデータに対して各フィルターをチェックします。

4

3 に答える 3

1

メモリをあまり使用しないようにプログラムを再構築する必要があります。DB の「全体」(または大部分) をメモリにプルする代わりに、カーソルを使用して、プログラムが維持しているデータ構造を段階的に更新するか、クエリしているメトリックを段階的に変更する必要があります。

編集:テーブルでブルームフィルターを実行したいかもしれないと付け加えましたか?インクリメンタルブルームフィルターをご覧ください:こちら

于 2012-06-19T07:17:36.457 に答える
1

セカンダリ ストレージ (ディスクなど) を使用して物理メモリを超えて論理メモリを拡張することは、通常、メモリ プールではなくスワッピングと呼ばれます。オペレーティング システムが既にそれを行っています。

メモリ プール ライブラリは、固定サイズの割り当てを使用することで、メモリ割り当ての速度とリアルタイムの予測可能性を向上させますが、実際のメモリは増加しません。

于 2012-06-19T07:04:02.457 に答える
0

物理アドレス拡張 (PAE)はどうですか

于 2012-06-19T07:09:34.867 に答える