mycat引起的insert后馬上select不到數據的故障分析


由於有2個task表t_task和e_task,代碼中Insert了t_task后馬上select t_task然后把結果Insert到e_task,結果發現經常e_task會沒有任何數據。

原因分析:使用mycat后讀寫分離,select語句會去從庫讀取t_task,這個時候很可能從庫還沒有把主庫的t_task同步到e_task,導致查詢不出來t_task所以e_task也沒有插入。

所以對於這種毫秒級的insert后馬上查詢,可以用如下的語句保證select語句走mycat的主庫,解決這個bug

<select id="selectOneTaskByCode" resultMap="BaseResultMap">
/*#mycat:db_type=master*/ select * from t_task where task_code=#{taskCode}
</select>


免責聲明!

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



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