合計 450,000 行と 90 列で構成されるテーブルがあります。単純な Select * from table を実行すると、GC オーバーヘッドの問題が発生し、プロセスが失敗します。
テーブルサイズは140~160MB
SELECT pg_size_pretty(pg_total_relation_size('mytable'));
フィールドのインデックスがありますが、クエリに WHERE 句がないため、それが役立つかどうかわかりません。
10K レコードのバッチ サイズでクエリを実行しようとしています。それは失敗しています。奇妙なことに、バッチ サイズを 10K からちょうど 10 (はい 10) に減らしても、GC オーバーヘッドの同じエラーが発生します。
Postgresql側の構成は次のとおりです(AWS RDSを使用しています)
temp_buffer = 8MB
shared_buffers = 32768 (recommended size is 393216 (25% of our maximum memory which is 1.5TB))
work_mem = 4MB (default engine)
effective_cache_size = 16384 (where as the default seems to be 4GB according to documentation)*
これを機能させるには、データベース テーブル レベルでどのような最適化を行うことができますか?