zoukankan      html  css  js  c++  java
  • 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、页锁

        

       

  • 相关阅读:
    Java应用中的SQL依赖注入攻击和防范
    强大的 Jquery图表绘制插件 —— jqPlot
    jqPlot的Option配置对象详解
    也谈Java值传递到底传递了什么?
    Use Case 中 include 与 extend 的区别
    STAR UML 简述1
    在Hibernate中使用 HibernateTemplate的三种方法
    jquery ui tabs详解(中文)
    高性能网页开发规则
    如何绘制 UML 活动图(Activity Diagram)
  • 原文地址:https://www.cnblogs.com/zhaobingqing/p/7074821.html
Copyright © 2011-2022 走看看