21

メモリから PostgreSQL データベース サーバーを実行したいと考えています。その理由は、私の新しいサーバーには 24 GB のメモリがあり、ほとんど使用されていないからです。

次のコマンドを実行して RAM ディスクを作成できることはわかっています。

mdmfs -s 1024m md2 /mnt

理論的には、PostgreSQL にデータをそこに格納させることもできます。ただし、これの問題は、サーバーがクラッシュまたは再起動すると、データが失われることです。

基本的に、大量のメモリがあり、メモリはハードディスクドライブよりも高速であるため、すべてのレコードを読み取るためにハードディスクドライブに移動する必要がないように、データベースを常にメモリにロードする必要があります。

サーバーがダウンした場合にデータを失わないように、PostgreSQL をディスクに書き込みながらこれを行う方法はありますか? または、すべてのデータをメモリにキャッシュする方法はありますか?

4

4 に答える 4

11

現在、非同期のストリーミング レプリケーションを使用しています。これは、従来のディスクを使用する個別の SLAVE インスタンスを使用して、MASTER をすべてメモリ内で実行できることを意味します。

マシンの再起動には、SLAVE を停止し、postgresql データを ramdisk にコピーして戻し、MASTER を再起動してから SLAVE を再起動する必要があります。これは、REDIS のようなものとよく比較される興味深い可能性ですが、冗長性、ホットスタンバイ、バックアップ、SQL、豊富なツールセットなどの利点があります。

于 2011-06-30T23:47:09.377 に答える
6

サーバー構成マニュアルの章を見ましたか? それをチェックしてから、グーグルpostgresql memory tuning

于 2009-12-02T10:59:12.147 に答える
3

答えはキャッシングです。サーバーにメモリを追加してから、PostgreSQLを調整してメモリ使用量を最大化することを検討してください。また、ファイルシステムキャッシュはこれを支援し、その一部を自動的に実行します。自分で管理する必要がなく、物理メモリよりも大きなデータベースを使用できるため、最初のヒットを除いてメモリ内にあるかのようにパフォーマンスを高速化できます。

于 2009-12-02T20:38:44.930 に答える
3

Postgres は、サーバーで利用可能な RAM を最大限に活用するように書かれていると信じざるを得ません。もうお察しのとおり、Postgres 以外でこれを行う信頼できる方法はありません。

Postgres 内では、トランザクションはすべての操作がアトミックであることを保証するため、Postgres データベースへの書き込み中に電源が落ちた場合、データベース全体ではなく、その特定の操作のみが失われます。

于 2009-12-01T21:03:24.397 に答える