事务属性的隔离属性

概念:

        它描述了事务解决并发问题的特征

                并发:多个事务(用户)在同一时间,访问并操作了相同的数据

                同一时间:不是指一个时刻,而是一个较小的时间段

        并发会产生哪些问题:

                1、脏读

                2、幻影读

                3、不可重复读

        并发问题如何解决

                通过隔离属性来解决。

 脏读:

        一个事务,读取了另一个事务中没有提交的事务,会在本事务中产生数据不一致的问题。

        例子:

                  A用户和B用户同时对同一个账户进行操作,账户中有500块钱,A用户优先对账户进行            操作,进行了取钱操作,取出了200块钱,但是并没有提交,此时B用户也对账户进行了操              作,进行了读操作,认为现在账户中的存款为300元,但是此时A又对账户进行了回滚,账              户余额变成了500,但是B读的却是300,造成了数据的不一致。

                它的本质是事务 B 去查询了事务 A 修改过的数据,但是此时事务 A 还没提交,所以事务         A 随时会回滚导致事务 B 再次查询就读不到刚才事务 A 修改的数据了,这就是脏读。

不可重复读:

                一个事务中,多次读取相同的数据,但是读取的结果不一样。会在本事务中产生数据不一致的问题。

        例子:

                假设有事务A,事务B,事务C,此时A对一条数据进行读操作,读取了一条数据,此时B            对这条数据的信息进行了修改(此时如果B的修改事务没有提交,A是无法读取的,也就是              不会出现脏读的情况),并进行了提交,即我们现在假设的前提是事务 A 只能在事务 B 提              交之后读取到它修改的数据。

                此时A再次读取这个数据,读取的却是B修改后的值,即和A第一次读的值不同,并且在            此之后,C又对数据进行了修改并且进行了提交,A读取在C之后又进行了读取,即A在同一            个事务中,读取到了三次不同的值,这就是不可重复读。

幻影读:

        一个事务中,多次对整表进行查询统计,但是结果不一样,会在本事务中产生数据不一致的问题。

        例子:

        ,你一个事务 A,先发送一条 SQL 语句,里面有一个条件,要表中有多少数据,然后呢,它一开始查询出来了 10 条数据。接着这个时候,事务 B往表里插了几条数据,而且事务 B 还提交了,此时多了几行数据。此时A又对表进行了相同的查询,此时的数据变成了12条数据,就像出现了幻觉一样。

        

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值