Mysql 锁

从锁的性能有乐观锁和悲观锁;锁的粒度有行锁、页锁、表锁;锁的对数据库操作类型有读锁、写锁、意向锁

  • 乐观锁:采用cas机制,不会阻塞数据库操作,只会针对当前事务进行失败重试。(用于写操作不多的情况)
  • 悲观锁:锁住操作的数据,阻塞其他事务对同一资源的操作。
  • 行锁:锁住一行数据
    InnoDB中,行锁是加载索引上的,
    1.在RR隔离级别中,加锁过程中没有找到索引则会升级为表锁
    2.在RC隔离级别中,加锁过程中没有找到索引则不会有锁升级
  • 表锁:锁住整张表,
 ‐‐手动增加表锁
lock table 表名称 read(write),表名称2 read(write);
‐‐查看表上加过的锁
show open tables;
 ‐‐删除表锁
unlock tables;
  • 页锁:只有BDB存储引擎支持,锁住索引页。

  • 间隙锁(Gap Locak):间隙锁在RR隔离级别生效,会锁住索引件的间隙(比如用a进行锁)
    在这里插入图片描述
    在这里插入图片描述
    当拥有索引的a进行加锁,则(111-120)都会被锁住。

  • 读锁:(共享锁、S锁(Shared)):select … lock in share mode;
    读锁是共享的,多个事务可以同时读取同一个资源,但不允许其他事务修改。

  • 写锁:(排他锁、x锁(exclusive)):select … for update;
    写锁是排他的,会阻塞其他的写锁和读锁,update、delete、insert都会加写锁。

  • 读锁和写锁是悲观锁

  • 意向锁(Intention Lock):又称I锁,为了提高表锁效率而增加。mysql进行表锁时会扫描表中是否存在读锁或者写锁,当有事务给表的数据行加了共享锁或排他锁,同时会给表设置一个标识,代表已经有行锁了,其他事务要想对表加表锁时,就不必逐行判断有没有行锁可能跟表锁冲突了,直接读这个标识就可以确定自己该不该加表锁。

相关推荐

  1. <span style='color:red;'>MYSQL</span> <span style='color:red;'>锁</span>

    MYSQL

    2024-05-14 16:14:10      58 阅读
  2. <span style='color:red;'>mysql</span>-<span style='color:red;'>锁</span>

    mysql-

    2024-05-14 16:14:10      42 阅读
  3. <span style='color:red;'>Mysql</span>-<span style='color:red;'>锁</span>

    Mysql-

    2024-05-14 16:14:10      42 阅读
  4. <span style='color:red;'>MySQL</span> <span style='color:red;'>锁</span>

    MySQL

    2024-05-14 16:14:10      33 阅读
  5. <span style='color:red;'>MySQL</span><span style='color:red;'>锁</span>

    MySQL

    2024-05-14 16:14:10      28 阅读
  6. MySQL

    2024-05-14 16:14:10       44 阅读
  7. MySQL——

    2024-05-14 16:14:10       47 阅读
  8. <span style='color:red;'>mysql</span><span style='color:red;'>锁</span>

    mysql

    2024-05-14 16:14:10      28 阅读

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-05-14 16:14:10       98 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-05-14 16:14:10       106 阅读
  3. 在Django里面运行非项目文件

    2024-05-14 16:14:10       89 阅读
  4. Python语言-面向对象

    2024-05-14 16:14:10       97 阅读

热门阅读

  1. 图书管理数据库

    2024-05-14 16:14:10       36 阅读
  2. Android 桌面小组件 AppWidgetProvider(2)

    2024-05-14 16:14:10       28 阅读
  3. 什么是跨境物流管理系统,它有什么功能

    2024-05-14 16:14:10       27 阅读
  4. Spring redis工具类

    2024-05-14 16:14:10       37 阅读
  5. 算法打卡day45

    2024-05-14 16:14:10       42 阅读
  6. 二级和三级城市插件

    2024-05-14 16:14:10       32 阅读
  7. MYSQL 存储过程 函数

    2024-05-14 16:14:10       38 阅读
  8. js怎么判断视频链接是否能播放

    2024-05-14 16:14:10       33 阅读
  9. obsidian 使用 git 进行多终端同步

    2024-05-14 16:14:10       30 阅读
  10. AI编程工具为什么选github copilot?

    2024-05-14 16:14:10       37 阅读