2016-07-14 125 views
1

我目前正试图找到一种更有效地从我的PostgreSQL/PostGIS数据库中读取大型几何对象的方法。我已经分析了我的查询计划和运行时间,如果我只回拉主键是非常可接受的,但是当我检索 - 有时非常大的几何对象时,返回时间可以进入单个查询的分钟数。从PostgreSQL数据库高效地检索大型数据对象

我想知道是否有任何更有效的方式从数据库中读取大型对象,除了一个典型的查询(也许某种流,我可以处理输入,我检索它,减少有效处理时间?)。我已经看过游标,但我不确定那是我正在寻找的,因为这些游戏似乎主要与PL/pgsql脚本相关,而不是Java应用程序。

我正在运行PostgreSQL 9.5,应用程序使用Java/Scala编写,并使用JDBC。任何帮助表示赞赏。

编辑 - 我还应该补充说,数据库是运行应用程序的本地机器。

回答

1

您应该检查在什么阶段Postgres的花的时间最多:

  • 从硬件

  • 通过网络发送的数据执行查询

  • retriving数据

如果你检索了很多dat那么当通过网络发送数据时可以花费很多时间。 我从来没有尝试过这一点,但也许你可以使用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