mysql事务

本文详细介绍了MySQL事务的ACID特性,包括原子性、一致性、隔离性和持久性,并探讨了原子性与一致性的区别。为了实现事务的原子性,数据库使用了undo和redo日志。在并发情况下,事务隔离性的重要性凸显,数据库通过悲观锁和乐观锁来保证数据一致性。文中还阐述了四种事务隔离级别:未提交读、已提交读、可重复读和可串行化,以及幻读的概念和解决方法。最后提到了MVCC作为乐观锁的一种实现,用于提高并发性能。
摘要由CSDN通过智能技术生成

事务的特性:acid
a:原子性:事务是一个不可分割的执行单元,事务中的操作要么全都执行,要么全都不执行
c:一致性:事务必须使数据库从一个一致性状态变换到另一个一致性状态,也就是说一个事务执行之前和执行之后都必须处于一致性状态(允许中间状态,只关心始终)
i:隔离性:事务的执行是相互独立的,它们不会相互干扰,一个事务不会看到另一个正在运行过程中的事务的数据,
d:持久性:一个事务完成之后,事务的执行结果必须是持久化保存的,即使数据库发生崩溃,在数据库恢复后事务提交的结果仍然不会丢失

原子性和一致性的区别:
原子性:比如a向b转账,a扣钱,b加钱,要么都成功了,要么都失败了
一致性:比如a和b的钱加起来是5000,不管a,b如何转账,转几次账,事务结束后两个用户的钱相加起来还是5000块
原子性并不能完全保证一致性,一致性是最基本的属性,其他的三个属性都为了保证一致性而存在
所谓一致性,指的是数据处于一种有意义的状态,最常见的例子是转帐。例如从帐户A转一笔钱到帐户B上,如果帐户A上的钱减少了,而帐户B上的钱却没有增加,那么我们认为此时数据处于不一致的状态。为了保证这个一致性,所以需要原子性
为了实现原子性,需要通过日志,将所有对数据库的更新操作都写入日志,如果一个事务中的一部分操作已经成功,但以后的操作,由于断电/系统奔溃/其他的软硬件错误而无法继续,则

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值