zoukankan      html  css  js  c++  java
  • Mysql的锁

    Mysql的锁

    1.分类

    1.1 按照范围

    • 表级锁
    • 行级锁

    1.2 其他

    • 排它锁
    • 共享锁

    image-20211119155024198l

    注:创建表的时候一般使用InnoDB引擎;

    2.排它锁

    • InnoDB引擎中,update、insert 、delete 的行为内部都会先申请锁(排它锁),申请到之后才执行相关的操作,最后在释放锁。

      所以,当多个人同时想数据库执行:insert、update、delete操作时,内部加锁后会排队逐一执行
      

      而select则默认不会申请锁。(查询不影响数据库的数据改变)

      SELECT * FROM XXX;
      

      select申请锁,需要配合 事务+特殊语法 实现

    • for update,排它锁,加锁之后其他不可以读写。

      begin;
      	select * from for update --表级锁
      commit;
      -- 完整的事务
      

      image-20211119162007878

    ​ 没有提交事务之前,锁会留住对应的语句排队执行;

    • image-20211119162047673
      提交完事务之后,执行对应的sql;

    • image-20211119162513097

    • 排它锁的应用场景

      image-20211119163411321

    • Python代码实现

      image-20211119163604928

    3.共享锁

    • image-20211119162711701

    • 共享锁的使用场景

      image-20211119163843236

  • 相关阅读:
    vb.net的数据类型
    PHP常用函数
    399. Evaluate Division
    329. Longest Increasing Path in a Matrix
    415. Add Strings
    463 Island Perimeter
    400. Nth Digit
    401. Binary Watch
    391. Perfect Rectangle
    406. Queue Reconstruction by Height
  • 原文地址:https://www.cnblogs.com/Blogwj123/p/15578078.html
Copyright © 2011-2022 走看看