搭建主從分離的後臺資料庫之後,讀操作和寫操作會用不同的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()之前的最後一次資料庫操作必須是寫操作。
但是在事務操作時卻很容易發生問題。
$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()之前的最後一次資料庫操作必須是寫操作。