1.事务与事务之间问题的解决还可以使用锁机制

  A.乐观锁

  理解:

    a.事务A,在操作前,给表加了一个标记 1操作过程中,事务B,也操作了这个表,同时把1变成了2当事务A,结束操作前,发现标记不是原来的1了,放弃修改放弃操作

    b.小孩吃饼干:玩之前有八块饼干,回来发现只有六块了,不吃了

    c.乐观的意思时他认为很安全、乐观

    d.简单理解为,本来标记东西被人动了,放弃了对这个东西得操作

  B.悲观锁

    理解:事务A在操作之前,把表锁起来,在此期间,只允许当事务A操作表,其他事务必须等待事务A结束后才能操作

2.读写分类

  A.共享锁-针对读操作

    理解:共享锁:当事务小明,操作时加了共享锁,其他事务只能读该表数据,不能修改,但是也可以加共享锁,不能加排它锁

  B.排他锁-针对写操作

    理解:当事务A给表加了排他锁之后,其他事务只能等待该事务的结束才能继续操作。事务A在此期间可以读写表内容

  注意:

    a.如果时读取数据,但是不允许其他事务修改数据时,可以使用共享锁
    b.如果是写数据,而且不允许其他事务操作当前表数据,那么可以使用排他锁

3.锁的粒度
   A. 表锁
        a.将整张表都锁起来
        b.开销小,加锁快,不会出现死锁。锁的粒度最大,适合查询为主的,只有少量按索引条件更新数据的操作。
        c.开销小,粒度最大。
        d.缺点时资源争用概率高
    B.行锁
        a.开销大,加锁慢,会出现死锁。锁的粒度最小,适合大量按索引条件并发更新少量不同数据,同时又有并发查询的操作。
        b.使用行级锁定的主要时InnoDB存储引擎
        c.范围越小越麻烦越慢开销越大
        d.开销大,粒度小
   C.页面锁
   注意:锁的粒度可以理解为锁的范围

posted @ 2020-04-16 17:43  淡雅星光  阅读(120)  评论(0编辑  收藏  举报