主從分離的事務操作很容易發生誤操作

發表於2019-05-11
搭建主從分離的後臺資料庫之後,讀操作和寫操作會用不同的linkID,確保讀寫分離,提高效率。
但是在事務操作時卻很容易發生問題。 
$model->startTrans();
{事務邏輯}
$model->commit();
如上結構體,假設寫的linkId為1,讀的linkID為2;
則select 操作用到2,update delete insert 操作用到1
把這些操作方到{事務邏輯}中,會隨時切換linkID
$model->startTrans(); //linkID=1
insert;                //linkID=1 
select;                //linkID=2
update;             //linkID=1
select;                //linkID=2
$model->commit(); //linkID=2
在如上操作時,事務開始和事務提交將不是用的一個資料庫,會導致資料修改無法提交,估在commit()之前的最後一次資料庫操作必須是寫操作。
回覆

相關文章