Mysql經典的“8小時成績”。本站提示廣大學習愛好者:(Mysql經典的“8小時成績”)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql經典的“8小時成績”正文
假定你的數據庫是mysql,假如數據源設置裝備擺設欠妥,將能夠產生經典的“8小時成績”。緣由是mysql在默許情形下,假如發明一個銜接的余暇時光跨越8小時,將會在數據庫端主動封閉這個銜接。而數據源其實不曉得這個銜接曾經封閉了,當它將這個無用的銜接前往給某個dao時,dao就會報沒法獲得connection異常。
假如采取dbcp的默許設置裝備擺設,因為testOnBorrow屬性的默許值是true,數據源在將銜接交給dao前,會事前檢測這個銜接能否是好的,假如銜接有成績(在數據庫端被封閉),則會取一個其他的銜接給dao。所以其實不會有“8小時成績”。假如每次將銜接交給dao時都檢測銜接的有用性,在高並發的運用中將會帶來機能的成績,由於它會須要更多的數據庫拜訪要求。
一種推舉的高效的方法是:將testOnBorrow設置為false,而將“testWhileIdle”設置為true,再設置好testBetweenEvictionRunsMillis值(小於8小時)。那些被mysql封閉的銜接便可以別消除出去,防止“8小時成績”。
固然,mysql自己也能調劑interactive-timeout(以秒為單元)設置裝備擺設參數,更改余暇銜接的過時時光。所以,在設置timeBetweenEvictionRunsmMillis值時,必需起首獲知mysql的余暇銜接的最年夜過時時光。
c3p0關於有用銜接的檢測,請參照dbcp設置裝備擺設方法。
以上所述就是本文的全體內容了,願望年夜家可以或許愛好。