首页 > 代码库 > MySQL高级-锁机制

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高级-锁机制