MySQL锁

📅 2026/7/23 19:37:28 👁️ 阅读次数 📝 编程学习
MySQL锁

锁是计算机协调多个进度或线程并发访问某一资源的机制,具体内容如下:

Mysql中的锁按照颗粒度可以分为以下三类

全局锁

以下是全局锁的概述,全局锁是对整个数据库加锁加锁后数据库处于只读状态 ,后续的ddl和dml语句都将被堵塞

全局锁的语法如下

以下是全局锁的特点:

表级锁

表级锁顾名思义就是锁住整张表,表级锁可以分为表锁、元数据锁、意向锁

表锁

表锁又分为两类,分为表共享读锁和表独占写锁

读写不会阻塞其他客户端的读但是会阻塞写,写锁既会阻塞读也会阻塞写

元数据锁

元数据锁在访问一张表的时候会自动加上,进行增删改查时候会加MDL读锁,对表结构进行变更操作的时候会加MDL写锁

以下是sql语句对应自动加上的锁的类型

意向锁

以下是意向锁的概述,为了避免加的行锁与表锁冲突,引入了意向锁,使得每次加表锁的时候会先检查意向锁来判定是否可以加表锁,而不用进行每行数据的检查

以下是意向锁的分类和特点

行级锁

以下是行级锁的概述,行级锁即每次操作行数据时施加的锁,行级锁又可分为行锁、间隙锁、临键锁

行锁

行锁又被分为共享锁和排他锁,以下是概述

以下是执行不同sql语句所施加的不同的锁

对唯一索引进行检索或者等值匹配时会自动优化为行锁,不通过索引条件检索数据那么,innoDB将对表中的所有数据加锁,此时升级为表锁

间隙锁/临键锁

以下是间隙锁/临键锁的概述,即在每个数据之间的空隙当中加锁