MySQL 的锁类型有哪些

数据库锁机制概述

数据库锁主要根据其锁定的数据粒度,分为全局锁表级锁行级锁。粒度越细,并发能力通常越高,但管理开销也越大。


一、全局锁

定义:锁定整个数据库实例,使其处于只读状态。

  • 作用范围:数据库中的所有表。
  • 主要影响
    1. 加锁后,整个实例处于只读状态。
    2. 后续的DML写操作DDL语句 以及更新操作的事务提交都会被阻塞。
  • 典型使用场景:全库逻辑备份,确保备份数据的一致性。

二、表级锁

每次操作锁定整张表。其下主要分为两种:

1. 表锁
  • 特点:开销小,加锁快。
  • 缺点:并发度最低,锁冲突概率高。
2. 元数据锁
  • 特点:自动加锁,无需显式使用。
  • 作用:保证表结构(元数据)与查询操作的正确性,防止在查询过程中表结构被修改导致数据不一致。
  • 加锁规则
    • MDL读锁 :当对表进行增删改查(DML)操作时自动添加。读锁之间不互斥,允许多个线程同时对一张表进行DML操作。
    • MDL写锁:当对表进行结构变更(DDL,如加字段)操作时自动添加。
  • 锁互斥规则
    • 读锁与写锁互斥:一个线程在执行DML时,另一个线程不能修改表结构。
    • 写锁与写锁互斥:两个线程不能同时修改表结构,必须串行执行。

三、行级锁

定义:针对数据表中单行或多行记录的锁。

  • 作用场景:当多个事务需要更新同一行数据时,后发起的事务必须等待前一个事务释放该行的锁。
  • 特点
    • 优点:锁冲突概率最低,并发度最高。
    • 缺点:开销大,加锁慢。
  • 常见类型:记录锁、间隙锁、临键锁等。

总结对比

锁类型 锁定粒度 开销 加锁速度 并发度 适用场景
全局锁 整个数据库 最低 全库备份
表级锁 整张表 DDL操作、数据迁移
行级锁 单行记录 高并发事务更新
相关推荐
扑火的小飞蛾5 分钟前
PostgreSQL 16.1 安装指南
数据库·postgresql
大猫子的技术日记5 分钟前
Redis 快速上手:5 分钟掌握核心能力
数据结构·数据库·redis·缓存·持久化·pub/sub
panzer_maus6 分钟前
Redis介绍(4)-认识Redis的事务
数据库·redis·缓存
zgl_200537797 分钟前
源代码:ZGLanguage 解析SQL数据血缘 之 显示 UPDATE SQL 结构图
大数据·数据库·数据仓库·hadoop·数据治理·sql解析·数据血缘
凌冰_8 分钟前
Thymeleaf Maven+Servlet+Mysql图书框架—4(十)
mysql·servlet·maven
Jan123.10 分钟前
数据库性能优化实战:从索引到SQL的全维度进阶
数据库·sql·性能优化
翼龙云_cloud12 分钟前
亚马逊云渠道商:RDS 三大数据库引擎深度对比 MySQL/PostgreSQL/SQL Server 如何选?
数据库·mysql·postgresql·aws
言之。16 分钟前
【2025年度】编程大模型对比与总结
数据库
麦聪聊数据18 分钟前
金融级数据库运维的“零信任”实践:如何在合规与效率间寻找平衡点?
运维·数据库·后端·sql·金融
全栈小518 分钟前
【数据库】Oracle数据库迁移的深层痛点:兼容性、成本与隐性挑战
数据库·oracle