mysql事务

事务四大特性

  1. 原子性:要么全部成功,要么全部失败。
  2. 一致性:事务前后,数据库的完整性约束没有遭到破坏。
  3. 隔离性:每个读写事务与其他事务互相分离,互不可见。
  4. 持久性:事务一旦提交,则其结果就是永久性的。

四大隔离级别

  1. read uncommitted(读未提交):一个事务读取到其他事务未提交的数据,此现象称为脏读。
时间点事务A事务B
1开启事务
2开启事务
3查询数据“张三”,(1,“张三”,18)
4修改数据张三,values (1,"张三“,20)
5查询数据“张三”,(1,“张三”,20)
  1. read committed(读提交):一个事务读取到另一个事务提交前后的数据,两次数据不一致。此现象称为不可重复读。
时间点事务A事务B
1开启事务
2开启事务
3查询数据“张三”,(1,“张三”,18)
4修改数据张三,values (1,"张三“,20)
5提交事务
6查询数据“张三”,(1,“张三”,20)
  1. repeatable read(可重复读):在同一个事务里,select的结果都是事务开始时时间点的状态,同样的操作每次读取都是一致的。mysql的默认隔离级别。可能会出现幻读。
时间点事务A事务B
1开启事务
2开启事务
3查询数据“张三”,不存在
4插入数据张三, insert into test(id,name) values (1,"张三“)
5提交事务
6查询数据“张三”,不存在
7插入数据张三, insert into test(id,name) values (1,"张三“),报错

时间节点7插入时,报主键冲突错误。

  1. serializable(序列化): 该隔离级别下,事务都是串行顺序执行的,并非性最低。mysql数据库的innodb引擎会给读操作隐式加一把共享锁,从而避免了脏读,不可重复读,幻读的出现。

四种隔离级别情况下产生的问题

隔离级别脏读不可重复读幻读
读未提交可以出现可以出现可以出现
读提交不可以出现可以出现可以出现
可重复读不可以出现不可以出现可以出现
序列化不可以出现不可以出现不可以出现
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值