23

アクセスを高速化するために PostgreSql データベース全体を RAM に配置するにはどうすればよいですか?? 8 GB のメモリがあり、DB 用に 2 GB を割り当てたいと考えています。共有バッファーの設定について読みましたが、データベースの最もアクセスされたフラグメントをキャッシュするだけです。DB全体がRAMに配置され、RAM DBから読み取りが行われ、書き込み操作が最初にRAM DBに書き込まれ、次にハードドライブ上のDBに書き込まれるソリューションが必要でした.(デフォルトのfsync = postgresql 構成設定で共有バッファーをオンにします)。

4

5 に答える 5

9

私はしばらくの間、同じ質問を自問してきました。PostgreSQL の欠点の 1 つは、MySQL のように IN MEMORY ストレージ エンジンをサポートしていないように見えることです...

とにかく、これがどのように行われるかを説明する記事を数週間前に見つけました。ただし、Linux でのみ動作するようです。私は自分で試したことがないので、それを保証することはできませんが、PostgreSQL テーブルスペースには実際にマウントされたリポジトリが割り当てられているため、理にかなっているようです。

ただし、このアプローチを使用しても、インデックスを RAM に配置できるかどうかはわかりません。MySQLがIN MEMORYテーブルでHASHインデックスの使用を強制するとは思わない...

私も巨大なデータセットを扱っているので、パフォーマンスを向上させるために同様のことをしたいと思っていました。私はpythonを使用しています。基本的に {key: value} ペアの形式のハッシュ テーブルであるディクショナリ データ型があります。これらを使用すると、非常に効率的で効果的です。基本的に、私の PostgreSQL テーブルを RAM に入れるために、私はそれをそのような python ディクショナリにロードし、それを操作し、たまに db に永続化します。うまく使えばそれだけの価値があります。

python を使用していない場合は、言語の同様の辞書マッピング データ構造であると確信しています。

お役に立てれば!

于 2009-01-04T06:29:24.353 に答える
2

ID でデータをプルする場合は、memcached を使用します - http://www.danga.com/memcached/ + postgresql。

于 2009-01-14T15:07:58.240 に答える
1

昔ながらのRAMdiskをセットアップし、pgにそのデータをそこに保存するように指示します。

ただし、必ず十分にバックアップしてください。

于 2009-06-02T22:33:04.067 に答える
0

たった 8 GB のデータベースで、すべての SQL アクティビティを既に最適化しており、ハードウェアでクエリの問題を解決する準備ができている場合は、問題が発生していることをお勧めします。これは、長期的にはスケーラブルなソリューションではありません。ソフトウェアとデータベースの設計面で実質的な違いを生み出すためにできることは何もないと確信していますか?

于 2009-01-04T06:59:32.577 に答える
0

Java を使用している場合は、おそらくTangosol Coherence キャッシュのようなものです。

于 2009-01-02T15:09:19.437 に答える