mysql系列--事物

事物的特性
原子性(atomicity)

一个事物是不可分割的工作单元,事务中的诸多操作要么都做,要么都不做

举例:用户a给用户b转账1000元

​ 1:用户a账户扣除1000

​ 2:用户b账户增加1000

​ 如果其中任何一个人数据操作失败,则都失败,保持原来的数值

​ 只有当两个账户操作都成功,才能算转账完成

一致性(consistency)

事物必须是使数据库从一个一致性状态变到另一个一致状态,一致性和原子性密切相关

举例:用户a给用户b转账1000元

​ 1:用户a账户扣除1000

​ 2:用户b账户增加1000

​ 即用户a账户-1000,用户b账户+1000,两个账户数值相加为0

隔离性(isolation)

数据库默认事务隔离级别为:REPEATABLE READ

一个事务的执行不能被其他事务干扰,即一个事务内部的操作及使用的数据对并发的其他事务是隔离的,并发执行的各种事务之间不能相互干扰

  • 未提交度(READ UNCOMMITTED)(脏读)

事务A开启了事务并更新,在提交事务前,事务B读取了修改后的数据, 如果事务A回滚, 事务B读到的数据就是脏数据

  • 已提交读(READ CPMMITTED)(不可重复读)

事物A开启事物并更新,提交事务前,事务B读取的数据是事务A更新前的数据

当事务A提交后,事务B读取的数据是事务A提交后的数据

  • 可重复读(REPEATABLE READ)

事物A开启事物并更新,提交事务前,事务B读取的数据是事务A提交前的数据

当事务A提交后,事务B读取的数据也是事务A提交前的数据

  • 可串行化(SERIALIZABLE)(幻读)

只有在数据增加和删除的情况下才会产生幻读的问题

事务A根据条件查询并修改数据后,提交事物前时发现还有其他新数据

此隔离级别解决幻读的问题,但是使用的事表锁,并发度低

持久性(durability)

也成为永久性(permanence),指一个事务一单提交,他对数据库中的数据改变是永久性的。接下来的其他操作和鼓掌不应该对其有任何影响

总结
隔离级别脏读不可重复读幻读
read uncommitted (未提交读)(脏读)
read committed(已提交读)(不可重复读)
repeatable read(可重复度)否(通过gap锁实现)
serializable(串行化)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值