インメモリテーブルについての私の理解は、メモリ内に作成され、ディスクに頼る必要があったとしても、可能な限り少ないテーブルです。そこにあるテーブル、または少なくともそのほとんどに収まる十分な RAM があると想定しています。テーブルをメモリにロードする明示的な関数 (pg_prewarm など) を使用したくありません。メモリがいっぱいでない限り、または別の方法で指定しない限り、CREATE TABLE
またはを発行するとすぐにテーブルがデフォルトでそこにあるようにしたいだけです。CREATE TABLE AS select statement
ディスクへのロギングは特に気にしません。
7 年前、同様の質問がここで尋ねられました。PostgreSQL は MySQL メモリ テーブルに相当しますか? . 2 件の回答があり、そのうちの 1 件は少し遅れていました (4 年後)。
1 つの答えは、RAM ディスクを作成し、そのテーブルスペースを追加することです。または、UNLOGGED テーブルを使用します。または、グローバル一時テーブルを待機します。ただし、特別なハードウェアは持っていません。通常の RAM しか持っていません。そのため、どうすればよいかわかりません。UNLOGGED 機能を使用できますが、私が理解しているように、まだかなりの量のディスク操作が関係しており (これを削減しようとしています)、デフォルトでテーブルがメモリにロードされるかどうかはわかりません。さらに、グローバル一時スペースがどのように関連しているのかわかりません。私の理解では、それらは共有できるスペース内のテーブルにすぎません。
別の回答では、インメモリ列ストア エンジンを推奨しています。そして、関数を使用してすべてをメモリにロードします。このアプローチで私が抱えている問題は、参照されているエンジンが古くてメンテナンスされていないように見え、他に見つからないことです。また、「メモリへのロード」機能を明示的に使用する必要はなく、代わりにすべてがデフォルトで行われることを望んでいました。
7年後のPostgres 12でインメモリテーブルを取得する方法を考えていました。