Linux运维MySQL事务篇

 

一、ACID

事务满足的四个条件:

原子性(Atomicity)

原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。

一致性(Consistency)

事务前后数据的完整性必须保持一致。

隔离性(Isolation)

事务的隔离性是多个用户并发访问数据库时,数据库为每一个用户开启的事务,不能被其他事务的操作数据所干扰,多个并发事务之间要相互隔离。

事务隔离分为不同级别,包括读未提交(Read uncommitted)、读提交(read committed)、可重复读(repeatable read)和串行化(Serializable)

持久性(Durability)

持久性是指一个事务一旦被提交,它对数据库中数据的改变就是永久性的,接下来即使数据库发生故障也不应该对其有任何影响

二、事务并发问题

脏读

事务B去查询了事务A修改过的数据,但是此时事务A还没有提交,所以事务A随时会回滚导致事务B再次查询就读不到刚才事务A修改的数据了

脏写

事务B去修改了事务A修改过的值,但是此时事务A还没有提交,所以事务A随时会回滚,导致事务B修改的值也没有了

不可重复读

在一个事务内读取表中的某一行数据,多次读取结果不同

幻读

是指在一个事务内读取到了别的事务插入的数据,导致前后读取数量总量不一致

三、事务隔离级别

隔离级别

脏读

不可重复读

幻读

读未提交(Read uncommitted)

可能

可能

可能

读已提交(Read committed)

不可能

可能

可能

可重复读(Repeatable read)

不可能

不可能

可能

可串行化(Serializable)

不可能

不可能

不可能

查询当前事务隔离级别
mysql> select @@tx_isolation;
mysql> select @@global.tx_isolation;
设置当前事务隔离级别
set global transaction isolation level [隔离级别]     永久设置 系统级别
set session transaction isolation level               临时设置 当前会话

读已提交----解决脏读

A:客户端
set  session  transaction isolation  level  read committed;
start transaction;
commit

B:客户端
set  session  transaction isolation  level  read committed;
start transaction;
commit


tips:
开启事务之后
B端进行修改数据但未提交
A端查询查询不到B端修改的数据
B端提交数据
A端能够查询到B端的数据

读未提交

A:客户端
set  session  transaction isolation  level  read uncommitted;
start transaction;
commit
B:客户端
set  session  transaction isolation  level  read uncommitted;
start transaction;
commit


tips:
开启事务之后
B端修改数据但未提交
A端能够查询到B端修改的数据
B端进行回滚操作
A端查询到的数据是B端修改之前的数据

可重复读

A:客户端
set  session transaction  isolation  level  repeatable read;
start transaction;
commit;
B:客户端
set  session transaction  isolation  level  repeatable read;
start transaction;
commit;

tips:
开启事务之后
B端修改数据但未提交
A端查询不到B端修改后的数据
B端提交
A端查询不到B端提交后的数据
在A端修改数据
A端查询到是是在B端修改数据以后的基础上修改的数据
  • 5
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值