mysql事务知识点总结(InnoDB)

事务的四大特性

原子性一个事务中的操作,要么全都完成,要么全都不完成。如果事务在执行过程中发生了错误,将会被回滚(rollback),就好像从来没有发生过一样。
一致性事务完成后,数据库的完整性没有被破坏。它关注的方面不仅有主键约束、外键约束等等必须要实现的约束,还有更多业务逻辑上的一致性。举个例子,张三转账给李四,张三的账户上少了100,李四的账户上多了100,那么张三少了100而李四多了100这个中间状态就是不可见的。像这种状态也是一致性关注的内容。
持久性即事务对数据库的更改是持久的,不是暂时的,即使系统故障也不会丢失。
隔离性数据库允许多个并发事务对其进行修改的能力。这里有我们熟悉的四大隔离级别,未提交读、已提交读、可重复读和可串行化。

事务的三个问题

即脏读、幻读、不可重复读。
脏读:指在事务A中读到了事务B未提交的数据,也就是所谓的“脏数据”。
不可重复读:指一个事务中两次读取相同的数据,却发生了结果不一致的问题。(此时读到的数据可以是另一个事务已提交过后的数据,因此和脏读不冲突。)
幻读:指一个事务中两次执行相同条件的查找和更新,但第二次会发现莫名其妙地多了一些新的数据行。举个例子,事务A查所有age=15的数据,然后把它们的字段a的值改成111,但与此同时事务B插入了一条age=15的数据,它的a不是111,于是事务A再次查询时发现多了一条数据,且未被更改,这就是幻读问题。
是不是看起来不太明白幻读和不可重复读的区别?没错,都是一个事务中前后两次查询的结果不相同,但不可重复读注重数据的更新和删除,而幻读注重数据的插入。如果使用锁机制来实现这两种隔离级别,在可重复读中,该sql第一次读取

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值