mysql事务

事务是逻辑上的一组操作,要么都执行,要么都不执行。

四大特性

原子性:原子操作,不可分割,要么都成功要么都不成功
一致性:从一个确定状态到另外一个确定状态
隔离性:并发下事务之间不相互干扰
持久性:事务一旦提交,他对数据库的修改将是持久的,即使故障也不应对其有影响。

并发事务的四个问题
脏读:一个事务读取到了另外一个事务没有提交的数据
丢失修改:两个事务都对某数据进行修改,两事务读到的是一样的,修改有前后顺序,导致先修改的这次操作被覆盖
不可重复读:一个事务读了一次,另一个事务对此数据进行修改,并且提交,则此事务再读到的数据和之前读到的不一致
幻读:与不可重复度类似,一个事务先读了一次,另外一个事务进行了插入操作,导致此事务再执行同样的查询获得了更多的结果,就像幻觉一样

不可重复读的关键在于修改,而幻读的关键在于插入或删除

引入另外一个概念,事务隔离级别,来解决上述问题

read uncommitted读取未提交:最低的级别,可能导致脏读、幻读或不可重复读;
read committed读取已提交:只读取其他事务已经提交的,解决了脏读问题,幻读和不可重复读没有解决。
repeatable read可重复读:对同一字段的多次读取结果相同,除非该事物本身进行修改,不能解决幻读
serializable可串行化:级别最高,依次执行事务,并发最差,可防止脏读、幻读或不可重复读

事实上,innoDB通过默认的可重复读+Next -key Lock锁来达到串行化的效果

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值