在 MySQL 中,锁的粒度(Granularity)指的是被加锁的数据范围大小。MySQL 支持多种粒度的锁,主要取决于所使用的存储引擎以及具体的操作。 按照锁的粒度从大到小划分,MySQL 主要支持以下 4 种粒度的锁: --- 1. 全局锁(Global Locks) 全局锁是对整个 MySQL 数据库实例加锁。 作用范围:整个数据库实例。加锁后,整个数据库处于只读状态,任何对数据的增删改(DML)、表结构更改(DDL)以及更新类事务的提交都会被阻塞。 实现命令:(简称 FTWRL)。解锁使用 。 主要应用场景:全库逻辑备份(如使用 )。为了保证备份时数据的一致性,防止备份过程中有数据写入。 注:对于 InnoDB 引擎,由于其支持 MVCC(多版本并发控制),通常在备份时使用 参数来获取一致性视图,从而避免使用全局锁,不影响业务写入。 2. 表级锁(Table-level Locks) 表级锁是对当前操作的整张表加锁。它是 MySQL Server 层和多种存储引擎(如 MyISAM、InnoDB、Memory)都支持的锁。 特点:开销小,加锁快;不会出现死锁;锁定粒度大...