事务详解1---并发事务带来的问题以及解决方法

事务是由一组SQL语句组成的逻辑处理单元.
mysql的事务的基本格式就是:

start transaction;
~sql语句;
commit;

事务的四个ACID属性:

  • 原子性(Atomicity):事务是一个原子操作单元;其对数据的修改要么全部执行,要么全不执行(着重点在对sql语句的执行上)
  • 一致性(Consistent):在事务开始和完成时,数据都必须保持一致状态。这意味所有相关的数据规则都必须应用于事务的修改,以保持数据的完整性(着重点时数据是否一致修改完成)
  • 隔离性(Isolation):数据库系统提供一定的隔离机制,事务处理过程中的中间状态对外部不可见,反之亦然。
  • 持久性(Durable):事务完成后,对数据库的修改是永久的,即使出现故障也能保持。

但实际应用中,数据库一般都会并发执行多个事务,多个事务并发那么也就会带来一些问题。

  • 脏写或者更新丢失:当两个事务选择同一行进行更新时,最后更新就会覆盖其他事务所做的更新
  • 脏读:事务A读到了事务B已经修改但是还没有提交的数据。
    同时开启两个窗口,模拟事务A事务B在这里插入图片描述

在这里插入图片描述

  • 不可重复读(Non-Repeatable Reads):一个事务在读取某些数据成功后,没有提交事务,在下一个时间再去读取之前已经读过的数据,发现数据已经变了或者已经删除了

在这里插入图片描述

  • 幻读:事务A读取到了事务B提交的新增数据,不符合隔离性,和上面两种操作步骤差不多,可以自己操作一下。

事务隔离级别
针对这些事务并发问题,数据库也相应地采取措施进行处理-------事务隔离级别
在这里插入图片描述
查看当前数据库的事务隔离级别:show variables like 'tx_isolation';
设置当前的数据库的事务隔离级别:set session transaction isolation level read uncommitted;
mysql默认是可重复读级别.

接下篇文章事务详解2-----事务与行锁的关系

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值