2016-07-14 8 views
1

現在、PostgreSQL/PostGISデータベースから大きなジオメトリオブジェクトを効率的に読み取る方法を探しています。私は私のクエリと実行時間のプランを分析しましたが、私は主キーを取り戻すだけで十分ですが、時には非常に大きなジオメトリオブジェクトを取得すると、戻り時間は1つのクエリの分になります。PostgreSQLデータベースから大規模なデータオブジェクトを効率的に取得する

一般的なクエリだけでなく、大量のオブジェクトをデータベースから読み取るための効率的な方法があるのだろうか(多分何らかの種類のストリーミング、取得時に入力を処理したり、有効な処理時間?)。私はカーソルを調べましたが、私が探しているのは、JavaアプリケーションではなくPL/pgsqlスクリプトに関連しているようです。

私はPostgreSQL 9.5を実行しています。アプリケーションはJava/Scalaで書かれており、JDBCを使用しています。どんな助けもありがとうございます。

EDIT - データベースがアプリケーションを実行しているマシンに対してローカルであることを追加する必要があります。

答えて

1

あなたは、Postgresが最も時間費やしているどの段階でチェックする必要があります:ネットワークを介してデータを送信するハードウェア

  • からの問合せに

  • retrivingデータを実行

    多くのデータを取得する場合ネットワークを介してデータを送信するときに多くの時間を費やすことができます。 は、私はこれを試したことがないけど、多分あなたは、PostgreSQL SSLCompresionオプションを使用することができます:1(デフォルト)に設定されている場合

    、SSL接続経由で送信されるデータは、(これは、OpenSSLバージョン0.9.8以降が必要)圧縮されます。 0に設定すると、圧縮は無効になります(これにはOpenSSL 1.0.0以降が必要です)。このパラメータは、SSLを使用しない接続が行われた場合、または使用されているOpenSSLのバージョンがサポートしていない場合は無視されます。 圧縮ではCPU時間が使用されますが、ネットワークがボトルネックになるとスループットが向上する可能性があります。圧縮を無効にすると、CPUのパフォーマンスが制限要因である場合、応答時間とスループットが向上します。

    [https://www.postgresql.org/docs/9.2/static/libpq-connect.html]

  • +0

    これは素晴らしい考えられており、一部の人のために働くかもしれないが、私のデータベースは、私のマシンにローカルなので、ネットワークが問題ではありません。 – aeskreis

    関連する問題