在 Go database/sql 包中,它說很少用 db.Close 關(guān)閉數(shù)據(jù)庫,因?yàn)樗馕吨辉S多 go 例程共享。那么當(dāng)我們給出 100 個(gè)查詢相同數(shù)據(jù)的函數(shù)時(shí),哪個(gè)更好:在每個(gè)函數(shù)里面打開數(shù)據(jù)庫只打開數(shù)據(jù)庫一次,每 100 個(gè)函數(shù)使用相同的連接。1 更容易,因?yàn)槿绻粋€(gè)失敗,其他 99 仍然可以工作。并且不需要傳遞數(shù)據(jù)庫連接參數(shù)。但在性能方面哪個(gè)更好?
1 回答

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