排他锁(Exclusive Lock,简称 X 锁,也称写锁)是一种强约束的锁机制

排他锁(Exclusive Lock,简称 X 锁,也称写锁)是一种强约束的锁机制 正确。排他锁Exclusive Lock简称 X 锁也称写锁是一种强约束的锁机制在数据库并发控制中用于保证数据的一致性和隔离性。当一个事务对某数据项如一行、一页或整个表加了排他锁后其他事务不能对该数据项加任何类型的锁包括共享锁 S 锁和排他锁 X 锁因此其他事务既不能读取除非使用未提交读/脏读隔离级别且数据库允许读未加锁但标准行为是阻塞或拒绝——在可重复读RR或读已提交RC等主流隔离级别下读操作通常需获取 S 锁而 S 锁与 X 锁互斥也不能修改写该数据项直到持有 X 锁的事务释放锁通常是事务提交或回滚时。✅ 补充说明共享锁S 锁读锁之间是兼容的多个事务可同时读但 S 锁与 X 锁互斥X 锁与 X 锁也互斥这正是实现“写-写”、“读-写”冲突控制的核心机制。-- 示例MySQL InnoDBSTARTTRANSACTION;SELECT*FROMaccountsWHEREid1FORUPDATE;-- 加 X 锁行级-- 此时其他事务执行 SELECT ... LOCK IN SHARE MODE 或 UPDATE/DELETE 同一行将被阻塞共享锁S 锁与排他锁X 锁的兼容性矩阵描述的是当一个事务已持有一种锁时另一个事务是否可以对同一资源如某一行成功加另一种锁。兼容性指“可同时存在”不兼容则意味着请求会被阻塞或拒绝直至原锁释放。以下是标准的两锁兼容性矩阵✅ 表示兼容/允许❌ 表示互斥/不允许已持有锁 \ 请求锁S 锁共享X 锁排他S 锁共享✅ 兼容多读并行❌ 不兼容读-写冲突X 锁排他❌ 不兼容写-读冲突❌ 不兼容写-写冲突 关键解读S S ✅多个事务可同时读同一数据无修改保证并发读效率S X ❌ X S ❌读写互斥防止脏读、不可重复读等异常X X ❌写写互斥避免更新丢失Lost Update 补充说明该矩阵是数据库如 MySQL InnoDB、PostgreSQL、SQL Server实现两阶段锁协议2PL的基础实际中锁的兼容性还受隔离级别影响例如在 READ UNCOMMITTED 下可能跳过加 S 锁但 X 锁仍强制存在某些系统支持意向锁Intent Locks如 IS/IX用于表级与行级锁协同但其兼容性也遵循上述核心规则。-- 示例兼容性体现-- T1 执行加 S 锁SELECT*FROMusersWHEREid1LOCKINSHAREMODE;-- MySQL-- T2 同时执行以下语句SELECT*FROMusersWHEREid1LOCKINSHAREMODE;-- ✅ 成功SSSELECT*FROMusersWHEREid1FORUPDATE;-- ❌ 阻塞SX 冲突