锁兼容矩阵是描述两种锁类型能否共存于同一资源的表格,✔表示兼容允许共存,✘表示不兼容将阻塞;常见锁包括S(共享)、X(排他)、U(更新)、IU/IS(意向)锁,其兼容关系决定并发行为与死锁风险。

SQL数据库中的锁兼容性决定了多个事务能否同时持有不同类型的锁而不发生冲突。理解锁兼容矩阵,是排查死锁、优化并发性能的关键。
什么是锁兼容矩阵
锁兼容矩阵是一个表格,描述了两种锁类型(如S锁和X锁)是否可以同时存在于同一资源上。如果矩阵中对应位置为“是”,表示兼容,允许共存;若为“否”,则不兼容,后请求的锁会被阻塞或直接拒绝(取决于隔离级别和锁策略)。
常见锁类型与含义
主流关系型数据库(如SQL Server、PostgreSQL)常用锁类型包括:
- S(共享锁):用于SELECT等读操作,允许多个事务同时持有,但阻止任何X锁获取
- X(排他锁):用于UPDATE/DELETE/INSERT等写操作,独占资源,禁止其他S或X锁
- U(更新锁):一种中间态锁,用于防止常见的更新冲突(如“读-改-写”时的双重升级),兼容S但不兼容U/X
- IU/IS(意向锁):表级锁,表明事务将在下层(页或行)加S/X锁,本身不阻塞数据访问,但与其他意向锁或真实锁存在兼容规则
典型兼容关系(以SQL Server为例)
以下为简化版核心兼容矩阵(✔=兼容,✘=不兼容):
&










