私は Postgres に比較的慣れていませんが、奇妙なエラーが発生し、Google で調べても何も見つかりませんでした。
それぞれ約 2 億行の 2 つの (比較的大きな) テーブルを作成しました。1 つ目は 4 行、2 つ目は 3 行です。それらはそれぞれ、各列に varchar を格納しています。
2 つのテーブルを結合し、結果の列の 3 つを選択して、3 番目のテーブルを作成しようとしています。クエリは次のとおりです。
create table table_C as
(select table_A.id as id, table_A.predicate, table_B.object as type
from table_A join table_B on
table_A.subject = table_B.subject);
クエリは約 10 時間実行され、その後中止されます。
ERROR: could not extend file "base/446695/504075.302": No space left on device
HINT: Check free disk space.
64 GB の RAM を搭載した Amazon EC2 インスタンスでこれを実行しており、データベースは最大 500 GB の空きボリュームに保存されています。結果のテーブルは大きくなるはずですが、元の 2 つのテーブルは 100GB 未満しか占有しないため、2 つの列を持つテーブルが 5 倍以上のスペースを占有するのは奇妙です。約 4 回試行し、インスタンスを再起動しようとしました。
データ ディレクトリと pg_stats_tmp ファイルの両方が正しいボリュームを指していることを再確認しました。(postgres.conf の「data_dir」と「pg_stat_tmp」の両方の設定)。
何かご意見は?どこかにバルーニングしている可能性のある他の一時ファイルはありますか (ルートボリュームには 150GB 以上の空き容量があります)。