嵌套事务导致mysql死锁_MySQL嵌套事务所遇到的问题

MySQL虽然支持嵌套事务,但在实际应用中并不常见。文章通过示例揭示了嵌套事务可能导致的死锁问题,并指出即使在外部事务回滚后,内部事务的更改依然会保存。为避免此类风险,建议使用全局锁或根据框架特性(如Flask的g全局变量、Django的thread local、Tornado的fd协程变量)来管理事务。同时,特定的数据库操作(如alter、create等)会强制提交事务,需谨慎处理。
摘要由CSDN通过智能技术生成

mysql是支持嵌套事务的,但是没多少人会这么干的…. 前段时间在国外看到一些老外在争论mysql嵌套事务的场景必要性。 逗死我了, 这嵌套的鬼畜用法还有啥场景必要性。   跟以前的dba同事聊过, 得知,在任何场景下都不要使用mysql嵌套的事务。

那么使用mysql嵌套事务会遇到什么问题 ?

mysql> select * from ceshi;

+------+

| n |

+------+

| 1 |

+------+

1 row in set (0.00 sec)

mysql> start transaction ;

query ok, 0 rows affected (0.00 sec)

mysql> insert into ceshi values(2);

query ok, 1 row affected (0.00 sec)

mysql> start transaction ;

query ok, 0 rows affected (0.00 sec)

mysql> insert into ceshi values(3);

query ok, 1 row affected (0.00 sec)

mysql> commit;

query ok, 0 rows affected (0.00 sec)

mysql> rollback;

query ok, 0 rows affected (0.00 sec)

虽然我在最后rollback回滚了,但是数据显示是  1 2 3  .    原本大家以为我的事务虽然是嵌套的状态,但感觉最后rollback

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值