我现在是这样的,项目有很多的数据库,都是在同一个mysql服务器下的,在main.php里面有db,db2,db3 现在是这样的有个入库操作,A表来自于db2,B表来自于db3,在使用事务的时候是这句:
$transaction = \Yii::$app->get('db2')->beginTransaction();
我不清楚到底写get('db2')还是get('db3')还是随便都可以??
我现在是这样的,项目有很多的数据库,都是在同一个mysql服务器下的,在main.php里面有db,db2,db3 现在是这样的有个入库操作,A表来自于db2,B表来自于db3,在使用事务的时候是这句:
$transaction = \Yii::$app->get('db2')->beginTransaction();
我不清楚到底写get('db2')还是get('db3')还是随便都可以??
5 回答3.2k 阅读✓ 已解决
3 回答3.6k 阅读✓ 已解决
1 回答4k 阅读✓ 已解决
3 回答1.8k 阅读✓ 已解决
2 回答2.2k 阅读✓ 已解决
2 回答2.8k 阅读✓ 已解决
5 回答1.4k 阅读
mysql单纯的事务是不支持跨库的。真要做的话可以使用XA Transactions
1.确认是否开启XA事务支持
如上,innodb_support_xa为ON 表示已开启,否则需先开启
2.XA事务实现
代码实现参考如下文章,供参考,未测试
https://blog.csdn.net/soonfly...
实际上使用事务会大大的影响性能,如非业务足够特别,一定要使用分布式事务强烈不建议使用,甚至单库的事务也谨慎使用。
通过异步的手段保证事务的最终一致是比较合理的思路。