0

次のように動作する postgres プロセスがあります。

1) レコードごとに行を持つテーブルに分割された CSV ファイル

2) pagent は、各レコードを読み取り、それを新しいレコードまたは更新として新しいテーブルに書き込む postgres 関数を実行します。

3) トリガーが新しいテーブルで実行され、レコード値に応じて plv8 関数が実行されてデータが更新されます (かなりの量の json 処理が含まれており、plv8 が最も簡単なコーディング方法でした)。2 番目の更新は plv8 からのもので、以下のパターンを使用しました:-

query = plv8.prepare('...');
query.execute(<params>);
query.free();

これを監視すると、5000 件のレコードを処理すると 14Gb の仮想メモリが使用されることがわかります。したがって、CSV レコードのサイズが 1k 未満であるため、何かがおかしくなっています。テーブルに新しいインデックスを追加した後、これは深刻になりました。

これに対する解決策はどこにあるのでしょうか。それは正常ですか、それはトランザクションまたは別の要因で更新されているインデックスにリンクされていますか?

4

0 に答える 0