2016-07-14 143 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

相關問題