前言

        前几天我们自考小组,一起学习数据库,学习到了并发操作,由于并行技术带来了几个问题,通过锁可以解决这些问题,但是锁不好理解,完全不知道是怎么用的,听着比较高大上,但是经过分析也就不过如此。

一、并发操作

        许多事务可能同时对同一数据进行操作,这个操作叫做并发操作,这里的”并发“指的是单处理机,利用分时方法实行多个事务的同时操作。
数据库的并发操作通常会带来三个问题:丢失更新问题、读脏数据问题、不可重复读问题。

  • 丢失跟新问题
            个人理解:两个或者多个并发进行的事务,同时对一个数据进行操作,当事务A先跟新了数据@,然后事务B也更新了数据@,此时就会覆盖事务A跟新的数据。就出现了丢失跟新问题。
  • 读脏数据问题
            有两种情况:
            一种是把未提交的随后被撤销的数据称为”脏数据“。用户读了”脏数据“,但是没有破坏数据库完整性。另一种是用户读了“脏数据”,引起自身的跟新操作被丢失,破坏了数据库的完整性。
  • 不可重复读问题
            个人理解:一个事务需要联系两次读同一数据A,但是在两次读操作间隔中,另一个事务改变了A的值。是的事务两次读的数据A有不同的值。

二、锁

        由于数据库的并行操作带来了三个问题,于是就引出了锁的技术。
        锁的定义是一个与数据项相关的变量,对可能应用于该数据项上的操作而言,所描述了该数据项的状态。
        锁的作用是使并发事务对数据库中数据项的访问能够同步。
        锁也分为两种:排他型锁(X锁)和共享型锁(S锁)。

  • 排他型锁(X锁)
            小故事:我的自考组长叫小倩,我和她一起去吃饭,她不吃完,我就不能吃,只能等着。
             加锁:XFIND R
             解锁:XRELEASE R
  • 共享型锁(S锁)
             小故事:现在有一个椅子,有很多人,这些人都想坐这个椅子,但是他们中不说让别人坐(解锁S),就谁都别坐。
             加锁:SFIND R
             升级或写操作:UPDX R
             解除:SRELEASE R

三、总结

         通过这次的学习,发现学习计算机还就是要编小故事,让大家都有兴趣学习,有兴趣学习计算机,才能前进。加油!