数据库事务隔离性实战

俗话说书上得来终觉浅,在回忆数据库事务相关知识时,在事务隔离性这块总是感觉没吃透,于是决定在mysql进行实战演练以加强知识的印象。

首先,介绍下数据库事务特性,简称ACID:

Atomic 原子性,事务中所有操作是一个整体要么全部完成,要么不做操作,不会有做到一半的情况。

Consistency 一致性,事务执行成功后,操作肯定是正确执行的,例如给你账户加100块,不可能结果给你加了50块。

Isolation 隔离性,各个事务之间是独立的。

Duration 持久性,事务完成后的操作做的修改是永久

我们这里重点讨论Isolation 隔离性,理解隔离性请以数据库单个事务为单位,一个事务中可以包含查询、修改等多个操作,以下为在mysql数据库进行的操作,先来了解几个操作时使用的命令:

#获取当前数据库事务隔离级别
SELECT @@tx_isolation;
#修改当前数据库事务隔离级别
#read-uncommitted 读未提交
#read-committed 读已提交
#REPEATABLE-READ 可重复读
#SERIALIZABLE
set tx_isolation = 'read-uncommitted';


#手动开启一个mysql事务,并在之后执行相关sql语句
START TRANSACTION #手动开启事务

ROLLBACK #回滚

COMMIT #事务提交

mysql下开两个窗口,将隔离级别设置为read-uncommitted 读未提交 ,试下事务A和事务B同时更新一条记录,到最后提交时,事务A执行成功COMMIT,但事务B执行失败进行ROLLBACK,观察回滚后记录信息。

以下为执行步骤,大家可以随便找个表试下,事务A和事务B分别在两个窗口中,并且设置了set tx_isolation = 'read_uncommitted'; 

#1.开启事务A
START TRANSACTION
#3.事务A更新用户年龄
UPDATE girl SET age = 44 WHERE id = 13;
#5.执行成功,提交
COMMIT
#2.开启事务B
START TRANSACTION
#4.事务B更新用户年龄
UPDATE girl SET age = 66 WHERE id = 13;
#6.执行失败,回滚
ROLLBACK

大家可以尝试的修改不同的隔离级别看看执行效果,便于大家对各个隔离级别的深入理解。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值