關於MYCAT 讀寫分離,與只讀事務的問題.


習慣性為了復用mysql連接,喜歡加上@Transactional(readOnly = true) 只讀事務,很多零碎的查詢下,速度會快一些,也環保一些.

最近用mycat做了讀寫分離,其中一個查詢加上了@Transactional(readOnly = true) ,居然出來了錯誤的數據,

刪除事務后,數據正確,想了半天,是否讀庫寫庫的數據可能不一致.經過比較,果然有一條數據不一致

加上了事務以后(只讀事務也是事務),MYCAT ,就一定會去查詢寫庫.

 

只讀事務:以下是我方法加上(方法里執行幾十次簡單快速的查詢)

耗時:89880126 (納秒),但是MYCAT會查詢寫庫

 不使用事務注解:

耗時:117560025(納秒),正確查詢了讀庫

那么問題來了,有沒有辦法使用ThreadLocal里保存的Mysql連接,同時又可以讓MYCAT正確的查詢讀庫呢?

@Transactional(propagation = Propagation.NOT_SUPPORTED)

耗時:66755063(納秒),正確查詢了讀庫



 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM