1 回答

TA貢獻(xiàn)1993條經(jīng)驗(yàn) 獲得超6個(gè)贊
數(shù)據(jù)庫(kù)池可能包含 0 個(gè)或多個(gè)與數(shù)據(jù)庫(kù)的空閑連接。這些是建立、使用而不是關(guān)閉的連接,保留以備將來(lái)使用。我們可以保留的這些數(shù)量是MaxIdleConns
.
當(dāng)您請(qǐng)求這些空閑連接之一時(shí),它會(huì)變成開(kāi)放連接,可供您使用。您可以使用的數(shù)量是MaxOpenConns
.
現(xiàn)在,擁有比允許的最大打開(kāi)連接數(shù)更多的空閑連接毫無(wú)意義,因?yàn)槿绻?em>可以立即獲取所有允許的打開(kāi)連接,剩余的空閑連接將始終保持空閑狀態(tài)。這就像一座有四車(chē)道的橋,但一次只能允許三輛車(chē)通過(guò)。
因此,我們希望確保
MaxIdleConns <= MaxOpenConns
編寫(xiě)函數(shù)是為了通過(guò)MaxIdleConns
在超過(guò) 時(shí)減少來(lái)保持這個(gè)不變量MaxOpenConns
。請(qǐng)注意,文檔說(shuō), only MaxIdleConns
is ever reduction to match MaxOpenConns
,后者永遠(yuǎn)不會(huì)正確。
要回答為什么開(kāi)發(fā)人員可能要單獨(dú)調(diào)整這些問(wèn)題:考慮一個(gè)通常安靜但偶爾需要打開(kāi)大量連接的應(yīng)用程序的情況。您可能希望指定一個(gè)大MaxOpenConns
但非常小的MaxIdleConns
,以確保您的應(yīng)用程序可以在需要時(shí)打開(kāi)盡可能多的連接,但快速釋放這些資源,為自身和數(shù)據(jù)庫(kù)釋放內(nèi)存。保持空閑連接處于活動(dòng)狀態(tài)并不是免費(fèi)的,通常這樣做是因?yàn)槟氡M快將其轉(zhuǎn)換為可用連接。
所以這里有兩個(gè)數(shù)字的原因是這兩個(gè)參數(shù)你可能有充分的理由單獨(dú)改變。當(dāng)然,API 的語(yǔ)義意味著,如果您不關(guān)心設(shè)置這兩個(gè)值,則可以只設(shè)置您關(guān)心的一個(gè),這可能是MaxOpenConns
- 1 回答
- 0 關(guān)注
- 453 瀏覽
添加回答
舉報(bào)