2017-05-18 6 views
3

私はポストギステーブルに約300GBの等高線データをロードしています。プロセスをスピードアップするために、まずデータをロードしてからインデックスを作成するのが最速です。データの読み込みには約2日しかかかりませんでしたが、今は約30日間インデックスを待っていますが、まだ準備ができていません。300GB Postgisテーブルのインデックスが遅い

クエリた:

create index idx_contour_geom on contour.contour using gist(geom); 

私はpgadmin4でそれを走った、とprogranのメモリ消費量は、以来、500メガバイトから100ギガバイト++に変化しました。

このようなデータベースのインデックスにこの長い時間を使用するのは正常ですか?

プロセスのスピードアップのヒントを教えてください。

編集: データは1x1度(緯度/経度)セル(約30.000セル)からロードされるため、1x1度を超える境界線がない線はほとんどありません。それらはEPSG:4326投影にあり、唯一の属性は高さとジオメトリ(geom)です。

+0

contour.contour構造体について考えてください。 –

+1

'maintenance_work_mem'を1GBのような本当に高い値に設定しましたか?それがインデックスの作成をスピードアップする主なノブです。それでも、時間は驚くべきことです。 CPUがビジー状態か、I/Oがボトルネックですか? –

+0

私は 'maintenance_work_mem'を設定していませんでした。これは問題かもしれません。私は 'ALTER SYSTEM SET maintenance_work_mem = '1GB'でこれを設定しました。 SELCT pg_reload_conf(); 'インデックスを再起動する必要があるかどうかは分かりませんが、これを有効にするには、週末に実行させ、mondayで再起動するようにします。ありがとう@LaurenzAlbe! - (CPUはそれほど多忙ではありませんが、maintenance_work_memが非常に低く設定されているとメモリ消費量が高いことに驚いています) – Einar

答えて

0

maintenance_work_memを1GBに変更し、他のすべての書き込みをディスクに書き留めませんでした(多くの挿入オブジェクトにはANALYZEが追加されていましたが、多くのリソースが必要でした)。私は今23分で走った。

関連する問題