作者:張松然
最近備戰(zhàn)京東雙11,在配置MySQL的超時配置發(fā)現(xiàn)有很多地方可以設置。這么多超時的配置有什么影響,以及配置會有什么影響呢?今天的文章就讓我來大家來分析一下。
1. JDBC超時設置
connectTimeout:表示等待和MySQL數(shù)據(jù)庫建立socket鏈接的超時時間,默認值0,表示不設置超時,單位毫秒,建議30000
socketTimeout:表示客戶端和MySQL數(shù)據(jù)庫建立socket后,讀寫socket時的等待的超時時間,linux系統(tǒng)默認的socketTimeout為30分鐘,可以不設置
2. 連接池超時設置
maxWait:表示從數(shù)據(jù)庫連接池取鏈接,連接池沒有可用連接時的等待時間,默認值0,表示無限等待,單位毫秒,建議60000
3. MyBatis查詢超時
defaultStatementTimeout:表示在MyBatis配置文件中默認查詢超時間,單位秒,不設置則無線等待
如果一些sql需要執(zhí)行超過defaultStatementTimeout可以通過Mapper文件單獨的sql的timeout進行配置
4. 事務超時
事務超時用于控制事務執(zhí)行的超時,執(zhí)行時間是事務內(nèi)所有代碼執(zhí)行總和,單位為秒。
總結
高級別的timeout依賴于低級別的timeout,只有當?shù)图墑e的timeout無誤時,高級別的timeout才能確保正常。例如,當socket timeout出現(xiàn)問題時,高級別的statement timeout和transaction timeout都將失效。
1. Transaction Timeout
Spring提供的transaction timeout配置非常簡單,它會記錄每個事務的開始時間和消耗時間,當特定的事件發(fā)生時就會對消耗時間做校驗,當超出timeout值時將拋出異常。
假設某個事務中包含5個statement,每個statement的執(zhí)行時間是200ms,其他業(yè)務邏輯的執(zhí)行時間是100ms,那么transaction timeout至少應該設置為1,100ms(200 * 5 + 100)。
2.?Statement Timeout
statement timeout用來限制statement的執(zhí)行時長,timeout的值通過調(diào)用JDBC的java.sql.Statement.setQueryTimeout(int timeout) API進行設置。不過現(xiàn)在開發(fā)者已經(jīng)很少直接在代碼中設置,而多是通過框架來進行設置。
在iBatis中,statement timeout的默認值可以通過sql-map-config.xml中的defaultStatementTimeout 屬性進行設置。同時,你還可以設置sqlmap中select,insert,update標簽的timeout屬性,從而對不同sql語句的超時時間進行獨立的配置。
3.?Socket timeout
JDBC的socket timeout在數(shù)據(jù)庫被突然停掉或是發(fā)生網(wǎng)絡錯誤(由于設備故障等原因)時十分重要。由于TCP/IP的結構原因,socket沒有辦法探測到網(wǎng)絡錯誤,因此應用也無法主動發(fā)現(xiàn)數(shù)據(jù)庫連接斷開。如果沒有設置socket timeout的話,應用在數(shù)據(jù)庫返回結果前會無期限地等下去,這種連接被稱為dead connection。
為了避免dead connections,socket必須要有超時配置。socket timeout可以通過JDBC設置,socket timeout能夠避免應用在發(fā)生網(wǎng)絡錯誤時產(chǎn)生無休止等待的情況,縮短服務失效的時間。
不推薦使用socket timeout來限制statement的執(zhí)行時長,因此socket timeout的值必須要高于statement timeout,否則,socket timeout將會先生效,這樣statement timeout就變得毫無意義,也無法生效。
- 2025年全球數(shù)據(jù)中心:數(shù)字基礎設施的演變
- 谷歌押注多模態(tài)AI,BigQuery湖倉一體是核心支柱
- 數(shù)字化轉(zhuǎn)型支出將飆升:到2027年將達到4萬億美元
- 量子與人工智能:數(shù)字化轉(zhuǎn)型的力量倍增器
- 華為OceanStor Dorado全閃存存儲榮獲CC認證存儲設備最高認證級別證書
- 2024年終盤點 | 華為攜手伙伴共筑鯤鵬生態(tài),openEuler與openGauss雙星閃耀
- 特朗普宣布200億美元投資計劃,在美國多地建設數(shù)據(jù)中心
- 工信部:“點、鏈、網(wǎng)、面”體系化推進算力網(wǎng)絡工作 持續(xù)提升算網(wǎng)綜合供給能力
- 2025年超融合基礎設施的4大趨勢
- 2025年將影響數(shù)據(jù)中心的5個云計算趨勢
免責聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網(wǎng)站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。任何單位或個人認為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權或存在不實內(nèi)容時,應及時向本網(wǎng)站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關文章源頭核實,溝通刪除相關內(nèi)容或斷開相關鏈接。