MySQL高级-锁机制

一、概述

  1、定义

    

  2、锁的分类

    ①从对数据操作的类型(读\写)分

      读锁(共享锁):针对同一份数据,多个读操作可以同时进行而不会互相影响。

      写锁(排它锁):当前写操作没有完成前,它会阻断其他写锁和读锁。

    ②从对数据操作的粒度分 

      表锁

      行锁 

 

二、三锁

  1、表锁(偏读)

      特点:偏向MyISM存储引擎,开销小,加锁块;无死锁;锁定粒度大,发生锁冲突的概率最高,并发度最低。

      案例分析:

        建表:

          

        手动增加表锁:

          

        手动释放表:

          unlock tables;

        查看表状态命令:

          show open tables;

        过程:

          

          

          

          

          

          

          

      结论:

        

        

      表锁分析:

        

         

  2、行锁(偏写)

    特点:

      偏向InnoDB存储引擎,开销大,加锁慢;会出现死锁;锁定粒度小,发生锁冲突的概率最低,并发度最高。

      InnoDB与MyISAM最大不不同有两点,一是支持事务,二是采用了行级锁。

    由于行锁支持事物:

      事务(Transaction)及其ACID属性:

        

 

      并发事务处理带来的问题:

        更新丢失(Lost Update):

          

        脏读(Dirty Reads):

          

        不可重复读(Non-Repeatable):

          

        幻读(Phantom Reads):

          

      事务的隔离级别:

        

    间隙锁:

      

    如何锁定一行:

      

      结论:

        

    行锁总结:

      

      

    优化建议:

      

  3、页锁

    

 

   

posted @ 2017-06-25 16:26  IT-執念  阅读(410)  评论(0编辑  收藏  举报