第 67 期 Go database/sql 資料庫連線池分析

mai_yang發表於2020-02-13

文章來自於:https://reading.developerlearning.cn/reading/67-2019-11-14-sql-pool-reading/

分享者:鄒文通@POP

觀看視訊

Go 夜讀第 67 期 Go database/sql 資料庫連線池分析

本期 Go 夜讀是由 POP 後端團隊的鄒文通給大家帶來的 Go 標準包 database/sql 資料庫連線池原始碼剖析。

大綱

  • sql 連線池簡介
  • 連線池的工作原理
  • sql 包連線池原始碼分析
  • 連線池使用 tips

Slides


QA

1. database/sql 中 MaxIdleConns 和 MaxOpenConns 應該怎麼設定才是相對合理的,在選擇設定具體的值時,他們又受什麼因素影響呢?

  • 關於這個問題,可以參考這篇文章 Production-ready Database Connection Pooling in Go. 文章的建議是 MaxOpenConns 應該和實際的開啟的連線數的監測值相關。然後按照 MaxOpenConns 的一定比值設定 MaxIdleConns,比方說 50%,這個值取決於你對業務的預估。每維持一個閒散連線,會造成 1MB 左右的客戶端記憶體開銷和 2MB 左右的資料庫記憶體開銷,CPU 開銷相對小一點。文章還給出了一些 benchmark 的測試,在預設 MaxIdleConns 和 MaxIdleConns = 50% * MaxOpenConns 情況下的一個效能的對比,可以參考一下。

參考資料


更多原創文章乾貨分享,請關注公眾號

更多原創文章乾貨分享,請關注公眾號
  • 第 67 期 Go database/sql 資料庫連線池分析
  • 加微信實戰群請加微信(註明:實戰群):gocnio

相關文章