在 Go database/sql 包中,它說很少用 db.Close 關閉數據庫,因為它意味著被許多 go 例程共享。那么當我們給出 100 個查詢相同數據的函數時,哪個更好:在每個函數里面打開數據庫只打開數據庫一次,每 100 個函數使用相同的連接。1 更容易,因為如果一個失敗,其他 99 仍然可以工作。并且不需要傳遞數據庫連接參數。但在性能方面哪個更好?
1 回答

慕容708150
TA貢獻1831條經驗 獲得超4個贊
您錯過了文檔中的一個重要部分:
返回的數據庫對于多個 goroutine 并發使用是安全的,并維護自己的空閑連接池。因此,應該只調用一次 Open 函數。很少需要關閉數據庫。
(強調我的)
因此,您的選項 #2 實際上沒有意義。連接是池化的 - 所以use the same connection for every 100 function
不適用。此外,選項 #1 是浪費時間 - 按照文檔說明只執行一次,但Ping
在執行之后調用以確保一切正常(并讓它實際嘗試連接到數據庫 - 無論驅動程序如何)。
- 1 回答
- 0 關注
- 331 瀏覽
添加回答
舉報
0/150
提交
取消