Mysql 呈現毛病使用直接中綴銜接招致數據被鎖(消費毛病)詳解。本站提示廣大學習愛好者:(Mysql 呈現毛病使用直接中綴銜接招致數據被鎖(消費毛病)詳解)文章只能為提供參考,不一定能成為您想要的結果。以下是Mysql 呈現毛病使用直接中綴銜接招致數據被鎖(消費毛病)詳解正文
使用直接中綴銜接招致數據被鎖(消費毛病)
根本狀況:
整個架構為了一致管理db銜接,共享銜接。 使用經過loadbalance銜接db訪問層。 db訪問層後端代理若干db。 使用到loadbalance以mysql協議通訊。 db訪問層到db以JDBC方式通訊。毛病: 某些數據庫中的表數據相當長一段時間被鎖,招致使用某些場景失敗。
毛病剖析:使用開啟一個事務的set autocommit=0命令是從app-lb-db訪問層-db,時期假如某個事務還未執行完,而app強行中綴銜接,就會招致app-lb的銜接斷開,而lb並不直接斷開後端的銜接,即lb-db訪問層-db的銜接不會斷,從而招致db不會發作回滾操作。而且此事務對某些記載加了鎖,於是就會發作某些數據被鎖。直到db訪問層檢測出該銜接超越了idle時間才會封閉,並發送回滾命令給db。
處理問題:
① lb在前端銜接封閉時要同時封閉同會話的後端銜接,並且db訪問層要監聽lb的銜接,一旦封閉則要做回滾操作。
②去掉lb,提供客戶端loadbalance,使用一旦封閉銜接db訪問層也要封閉銜接。
感激閱讀,希望能協助到大家,謝謝大家對本站的支持!