42

PostgreSQLにはMySQLメモリテーブルに相当するものがありますか?

これらのMySQLメモリテーブルは、セッション間で存続できます(つまり、セッションの終了時にドロップする一時テーブルとは異なります)。私はPostgreSQLで同じことができるものを見つけることができませんでした。

4

2 に答える 2

45

いいえ、現時点ではPostgreSQLには存在しません。本当にメモリテーブルが必要な場合は、RAMディスクを作成し、そのテーブルスペースを追加し、その上にテーブルを作成できます。

異なるセッション間で表示される一時テーブルのみが必要な場合は、UNLOGGEDテーブルを使用できます。これらは真のメモリテーブルではありませんが、テーブルデータがシステムRAMよりも大幅に小さい場合、驚くほど同じように動作します。

グローバル一時テーブルは別のオプションですが、9.2以降のPostgreSQLではサポートされていません(コメントを参照)。

于 2012-07-30T21:24:36.317 に答える
20

4年前の質問に答えますが、それは今でもグーグル検索結果の上に来るので。

テーブル全体をメモリにキャッシュする組み込みの方法はありませんが、これを実行できる拡張機能があります。

In Memory Column Storeは、拡張機能のドロップとして、また列型ストレージおよび実行エンジンとして機能するライブラリです。ドキュメントについては、こちらを参照してください。テーブル全体をメモリにロードするために使用できるロード関数があります。

利点は、テーブルがpostgres shared_buffers内に格納されるため、クエリを実行すると、postgresはページがメモリ内にあることを即座に検知し、そこからフェッチすることです。

欠点は、shared_buffersが実際にはそのように動作するように設計されておらず、不安定になる可能性があることです(通常は発生しません)が、安全のために、この構成のセカンダリクラスター/マシンでこれを使用できる可能性があります。

postgresとshared_buffersに関する他のすべての通常の警告は引き続き適用されます。

于 2016-01-06T13:24:56.490 に答える