MySql脏读幻读不可重复读

本文详细解释了数据库事务的概念,为何需要事务以及其原子性、一致性、隔离性和持久性等特性。讨论了脏读、不可重复读和幻读的问题,以及如何通过事务隔离级别来解决。特别提到了MySQL和MVCC在保证事务隔离性方面的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

什么是数据库事务,为啥要有?

        事务:由一个有限的数据库操作序列构成,这些操作要么全部执行,要么全部不执行,是一个整体不可分割

        假如A转账给B 100 元,先从A的账户里扣除 100 元,再在 B 的账户上加上 100 元。如果扣完A的100元后,还没来得及给B加上,银行系统异常了,最后导致A的余额减少了,B的余额却没有增加。所以就需要事务,将A的钱回滚回去,就是这么简单。

        为啥要有?保证数据的最终一致性

事务的特性

        四个典型特征:原子性,一致性,隔离性,持久性

        原子性:事务作为一个整体被执行,包含在其中的对数据库的操作要么全部执行,要么都不执行。

        一致性:几个并行执行的事务,其执行结果必须与按某一顺序 串行执行的结果相一致。假如A账户给B账户转10块钱,不管成功与否,A和B的总金额是不变的。

        隔离性:事务的执行不受其他事务的干扰,事务执行的中间结果对其他事务透明。

        持久性:事务完成提交后,事务对数据库所作操作更改,持久保存在数据库中

1.脏读(dirty read)

        原因:

        指事务读取到其他事务未提交的值

        例子:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值