mysql表级锁(表锁/元数据锁/意向锁)


表级锁的分类

1、表锁(分类)

表锁是锁住整张表,通过不同的表锁设置,控制并发访问。某些引擎不支持行锁,需要通过表锁来控制并发。支持行锁的引擎,就不建议使用表锁了。

1.表共享读锁(read lock)

只能进行读操作,不能进行写操作

第一个session窗口,对表进行读锁的情况下,会有错误的提示

在这里插入图片描述

其他session窗口中进行更新操作的时候会被阻塞:
在这里插入图片描述

当unlock tables时,读锁被释放,阻塞被释放,


2.表独占写锁(write lock)

在这里插入图片描述
当进行写锁的情况下:
当前会话session可以正常进行写入,读取等操作
但是其他会话session将无法进行读取和写入操作等写锁unlock tables被释放的情况下,将恢复正常的读写操作;

3.语法:

1.加锁:lock tables 表名....read/write

2解锁:unlock tables /客户端断开

2、元数据锁(meta data lock )

元数据锁主要是面向DML和DDL之间的并发控制,如果对一张表做DML增删改查操作的同时,有一个线程在做DDL操作,不加控制的话,就会出现错误和异常。元数据锁不需要我们显式的加,系统默认会加。

元数据锁的原理:

1.当做DML操作时,会申请一个MDL读锁

2.当做DDL操作时,会申请一个MDL写锁

3.读锁之间不互斥,读写和写写之间都互斥

3、意向锁

nnoDB支持多种粒度锁定,允许行锁和表锁并存。为了使在多个粒度级别上的锁定变得切实可行,InnoDB实现了意图锁。
意向锁是表级锁,表示事务稍后对表中的行需要上哪种类型的锁(共享锁或排他锁)。有两种类型的意图锁

1.意向共享锁(IS):由语句 select … lock in share mode添加

与表锁共享锁兼容,与表锁写入互斥

2.意向排他锁(IX):由 inser、update、delete、select…for update添加

与表锁共享锁及排它锁互斥,意向锁之间不会排斥

相关推荐

  1. mysql

    2024-06-05 21:06:04       56 阅读
  2. MySQL 、行

    2024-06-05 21:06:04       39 阅读
  3. mysql

    2024-06-05 21:06:04       36 阅读
  4. MySQLMySQL(三)数据与间隙

    2024-06-05 21:06:04       25 阅读

最近更新

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

    2024-06-05 21:06:04       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-06-05 21:06:04       100 阅读
  3. 在Django里面运行非项目文件

    2024-06-05 21:06:04       82 阅读
  4. Python语言-面向对象

    2024-06-05 21:06:04       91 阅读

热门阅读

  1. Qt程序发布工具windeployqt.exe所带来的坑

    2024-06-05 21:06:04       27 阅读
  2. C++中的List

    2024-06-05 21:06:04       28 阅读
  3. x264 参考帧管理原理:i_frame_num 变量

    2024-06-05 21:06:04       31 阅读
  4. Web前端框架:深入探索与实践

    2024-06-05 21:06:04       29 阅读
  5. AndroidStudio设置允许APP获取定位权限

    2024-06-05 21:06:04       31 阅读
  6. 算法题day37日(补5.23日卡:贪心算法day4)

    2024-06-05 21:06:04       25 阅读
  7. rman reset database incarnation 重建controlfile

    2024-06-05 21:06:04       20 阅读
  8. mac 安装mvn 、node 、vue

    2024-06-05 21:06:04       26 阅读
  9. R语言数据分析15-xgboost模型预测

    2024-06-05 21:06:04       34 阅读
  10. NXP RT1060学习总结 - 基础CAN功能

    2024-06-05 21:06:04       32 阅读
  11. SpringMVC:获取请求数据

    2024-06-05 21:06:04       29 阅读