• Mysql锁机制 4


    概述

    1. 定义
    • image.png
    1. 生活购物
    • image.png
    1. 锁的分类
      • 从对数据操作的类型(读/写)分离
        • 读锁(共享锁):针对同一份数据,多个读操作可以同时进行,而不会相互影响。
        • 写锁(排它锁):当前写操作没有完成,它会阻断其他写锁或读锁。
      • 从对数据操作的粒度分为
        • 表锁
        • 行锁

    三锁(表、行、页)

    • 开销、加锁的速度、死锁、粒度、并发性能(具体应用/业务分析合适的锁)

    表锁(偏读)

    1. 特点
      • 偏向MyISAM存储引擎,开销小,加锁快;无死锁;锁定粒度大,发生冲突的概率高,并发度低。
    1. 案例分析
    • 建表sql
      • image.png
    • 加读锁-   #  lock table mylock read,book write;  # mylock 是读锁,book是写锁  
      • image.png
      • image.png
      • image.png
      • case:
      • image.png
      • image.png
      • image.png
      • image.png
      • image.png
    • 加写锁
      • mylock 表添加write锁(MyIsAM存储引擎的写阻塞案例)
      • image.png
      • image.png
      • image.png
      • image.png
    1. 案例结论
    • image.png
    • image.png
    1. 表锁分析
    • image.png
    • image.png
    • image.png

    行锁(偏写)

    1. 特点
    • 偏向InnoDB存储引擎,开销大,加锁慢;
    • 会出现死锁;
    • 锁定粒度最小,发生锁冲突的概率最低,并发度也最高。
    • InnoDB 和 MyISAM 的最大不同(俩点)
      • 支持事务
      • 行级锁
    1. 由于行锁支持事务,复习老的知识
    • 事务(Traction)及ACID属性
      • image.png
    • 并发事务处理带来的问题
      • 更新丢失(Lost Update)
        • image.png
      • 脏读(Dirty Reads)
        • image.png
      • 不可重复读(non-Repeatable Reads)
        • image.png
      • 幻影读(Phantom Reads)
        • image.png
    • 事务的隔离级别
      • image.png
      • image.png
    1. 案例分析
      1. 建表SQL
    • image.png
    • image.png
      1. 行锁定 基本演示
    • image.png
      1. 无索引锁升级为表锁
    • update test_innodb_lock set a=1 where b=1;
      • 如果b 是 varchar 类型的,
      • 会导致mysql 数据类型自动转换,
      • 索引失效,
      • 还会导致 mysql 从行锁升级为表锁,从而导致整个表阻塞。
      1. 间隙锁危害
    • image.png
    • image.png
      1. 面试题:如何锁定一行(常考)
    •  image.png
    • 案例结论
      • image.png
    1. 行锁分析
    • image.png
    • image.png
    • image.png
    1. 优化建议
    • image.png

    页锁

    • image.png
     
     
  • 相关阅读:
    != 比 & 的优先级高
    VC++ 报错:Heap corruption detected
    sqlite 查询数据库中所有的表名,判断某表是否存在,将某列所有数值去重后获得数量
    Unicode与UTF-8,UTF-16
    各种格式的压缩包解压,7zip 命令行
    bat批处理文件运行时隐藏cmd窗口
    标准库中 vector list等排序
    duilib 实现列表头任意拖动
    duilib 实现 XML重用(item完全重合的CList)
    C++-POJ2503-Babelfish[hash]
  • 原文地址:https://www.cnblogs.com/yh-z/p/13043990.html
Copyright © 2020-2023  润新知