讀寫分離無效的大坑(新使用數據庫讀寫分離的同窗能夠參考)

前置條件,本身已經實現了mysql的主從複製和讀寫分離(atlas或者mycat),會遇到的問題java

1.剛修改後的數據,立馬查詢是可能不一致的,由於數據同步是須要時間的,好多開發人員會忽略這一點mysql

 解決辦法:sql

    (1)開啓方法事務,讀寫分離默認事務操做只會走主庫,這裏就要考慮到主庫的壓力問題數據庫

    (2)經過代碼邏輯儘可能避免修改庫後立馬查詢的操做(通常採起這種方式)架構

2.注意開發框架的事務配置(java 舉例),通常咱們會在配置文件配置某些約定的方法名字前綴開啓不一樣的事務(或者不開啓),但如今隨着註解事務的流行,好多開發人員(或者架構師)搭建框架的時候在service類上加上了@Transactional註解,致使整個類都是開啓事務的,這樣嚴重影響數據庫執行的效率,更重要的是開發人員不重視、或者不知道在查詢類的方法上面本身加上@Transactional(propagation=Propagation.NOT_SUPPORTED)就會致使,全部的查詢方法實際並無走從庫,致使主庫壓力過大框架

 解決辦法:根據service方法類型(寫多仍是讀多)來家Transaction的註解,每一個方法加本身單獨的註解,但不建議,推薦約定不一樣的方法名前綴控制註解。事務

相關文章
相關標籤/搜索