首頁 > 後端開發 > Golang > 主體

為什麼我的 Go 資料庫/sql 查詢比直接 Postgres psql 查詢慢很多?

Linda Hamilton
發布: 2024-11-22 09:44:11
原創
818 人瀏覽過

Why is my Go database/sql Query Significantly Slower Than a Direct Postgres psql Query?

使用資料庫/sql 查詢比直接查詢資料庫慢得多

儘管使用相同的查詢,但執行查詢之間存在明顯的效能差異直接使用Postgres 的psql 實用程式並使用Go 應用程式中的database/sql 套件進行查詢。這種差異(在 psql 中需要幾毫秒的查詢在 Go 中需要幾十毫秒)可能歸因於實作中的特定因素。

了解資料庫/sql 連接

database/sql 初始化一個連接池來建立與資料庫的連接,而不是建立單一連接。 database/sql 中查詢執行的初始延遲是因為池以零開啟連線開始。第一個查詢必須在執行 SQL 語句之前建立與伺服器的連線。

後續查詢也會面臨延遲,因為第一個查詢的連線尚未釋放回池中。這意味著每個後續查詢在執行查詢之前都需要建立一個新連線。

將連線釋放回池

要解決效能差異,請確保連線每次查詢後都會釋放回池中。釋放連線涉及保留 db.Query 的主要回傳值,然後呼叫其 Close 方法。

使用開啟的連線初始化池

為了緩解初始延遲,初始化後立即對連線池呼叫 Ping。這可確保池中至少有一個連線可用。

準備好的語句

雖然不帶參數的簡單查詢按預期執行,但在數據庫/sql 中帶參數的查詢實際上在幕後創建並執行準備好的語句。使用不同參數多次執行相同查詢時,準備好的語句可提供效能優勢。

解決額外延遲

除了連接管理和準備好的語句之外,還可能存在其他延遲因素需要考慮:

  • 網路延遲:資料傳輸造成的延遲應用程式和資料庫之間的網路。
  • 伺服器負載:資料庫伺服器的工作負載會影響查詢執行時間。

透過解決這些因素並實施根據建議,使用database/sql查詢的效能可以顯著提升,堪比直接查詢資料庫。

以上是為什麼我的 Go 資料庫/sql 查詢比直接 Postgres psql 查詢慢很多?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板