2017-02-27 5 views
2

私は、高速SSDディスク、2,4 GHz i5プロセッサ、および8 GBのRAMを搭載した遅い古いコンピュータでpostgresサーバーを実行しています。コンピュータはスピードモンスターではありませんが、パフォーマンスには驚いています。 40,000,000行のテーブルにインデックスを作成するには、およそ30分かかります。私の設定は次のとおりです。Postgres:CPUバインドCREATE INDEX

max_connections = 2 
shared_buffers = 2GB 
effective_cache_size = 6GB 
work_mem = 1GB 
maintenance_work_mem = 512MB 
min_wal_size = 1GB 
max_wal_size = 2GB 
checkpoint_completion_target = 0.7 
wal_buffers = 16MB 
default_statistics_target = 100 

私はtop出力を見たとき、私はデータベースが使用するメモリは約500 MBでしたが、CPU(100%のCPU)が結合していると私はそれがより使用することを期待するように見えます。

最初のデータのインポート時に、テーブルごとにインデックスを1回だけ作成します。この操作を高速化するために微調整できる設定はありますか?

+0

CPUにバインドされている場合は、それ以上の調整はできません。 – joanolo

+1

計算コストの高いインデックスですか?それはそれを説明するでしょう。おそらく 'CREATE INDEX'ステートメントを表示することができます。 'maintenance_work_mem'を増やした方が速くなりますか? –

+0

'maintenance_work_mem'で確認します。作成は簡単です、 'CREATE INDEX index_name on name(varcharField);' – wczekalski

答えて

1

maintenance_work_memを1GBに増やし、Cロケールでデータベースクラスタを初期化すると、システムの1つのデフォルトとは異なり、わずか2分かかりました。

関連する問題