[软考]并发控制之数据不一致

       数据库是一种共享的资源,我们在计算机中并发运行的时候,会不断的调用数据库中的这些共享资源,于是存在同一时间内多用户同时调用数据库中同一个资源的情况,这样,我们的并发操作应该如何避免这些问题,解决这些问题的时候我们又是如何利用封锁机制的呢?

      在系统运行的时候,一个基本的变量就是事务,事务就是定义一个用户操作的序列,要不全做,要不全不做。假如做到了一半就停止啦,那可就麻烦啦。比如我们去银行取钱,我们取到了一半,不想取钱了,直接退卡,那我们还没有拿到钱,银行卡里面已经扣钱啦,不是很糟糕吗?事务具有四个特性,分别是原子性、隔离性、一致性、持久性。我觉得原子性、一致性、持久性是每一个事务都具有的特点,但是隔离性是随着实际的环境而定的,毕竟不被其它事务干扰是一个大环境。

      数据库的不一致操作会带来数据的不一致,分别是丢失更新、读脏数据、不可重复读。自考的时候对他们理解的不深刻,通过看软考课本,来谈谈我对他们的理解。

丢失更新

      事务一和事务二从数据库中读入同一个数据,并修改,事务2的提交结果破坏了事务一的提交的结果,导致了事务一的修改丢失。
      我们可以从以下的几个方面来分析这个概念,首先这里涉及到了俩个事务,或者是更多地事务,他们选择的对象是同一个对象,比如同样的一行数据,因为任何一个事务的存在都是不知道其他事务的存在的,所以当最后一个人提交更新的时候,会覆盖之前所有人对该行的操作。

读脏数据

       脏数据是读出事务1修改一个数据的时候,并将其写回磁盘,事务2读取同一个数据后,事务1由于原因被撤销,这是事务1已经修改过的数据恢复原值,事务2读到的数据就和数据库中的数据不一致,是不正确的数据,所以叫做脏数据。
       首先,事务1的操作还没有将数据写入到数据库中,但是事务2已经开始读事务1啦,并且还依据事务1的数据进行了很多的操作。所以那个数据修改,还是还没有到数据库就是脏数据。

不可重复读

      事务1读取了操作,而事务2执行了更新操作,而事务1使用的仍然是更新前的值,造成了数据的不一致。

      我们知道,事务1读了俩次数据,或者是多次的,而中间虽然事务2操作了,但是事务1读到的还是一样的数据。
    
      第一次学习的时候,很是不理解,学习软考的时候,忽然觉得自己懂了。软考加油!
    
 

      


      




            
评论 22
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值