MySQL高级-锁机制

Posted IT-執念

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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、页锁

    

 

   

以上是关于MySQL高级-锁机制的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记MySQL数据库高级版 - 索引优化慢查询锁机制等

MySQL高级——锁与事务

MySQL高级——锁与事务

MySQL高级——锁与事务

从高级到实战讲的太清楚了,附Java面经

mysql查看锁表情况,高级面试题+解析