用途:检测、分析并预防 PostgreSQL、MySQL 和 MongoDB 中的数据库死锁,覆盖从发现阻塞、解析死锁日志到定位应用代码根因与实施预防措施的完整流程。
主要能力:检查当前被阻塞事务及其阻塞者(PostgreSQL 查询 pg_stat_activity 与 pg_locks,MySQL 查询 information_schema.INNODB_LOCK_WAITS);从数据库日志解析近期死锁事件(PostgreSQL 搜索 ERROR: deadlock detected,MySQL 执行 SHOW ENGINE INNODB STATUS\G 查看 LATEST DETECTED DEADLOCK);从日志构建锁等待图,映射事务持有与等待的锁,找出循环依赖;用 Grep 将死锁查询回溯到应用代码并定位事务边界;识别根因模式(锁顺序相反、MySQL 索引间隙锁、外键锁升级、隐式锁升级);实施预防策略(统一锁顺序、缩短事务、使用 SELECT ... FOR UPDATE NOWAIT 或 SKIP LOCKED、降低隔离级别、对死锁牺牲事务加重试逻辑、监控死锁频率、必要时使用咨询锁)并输出分析报告。
使用方式:需具备可访问锁监控视图的数据库凭据、psql 或 mysql CLI、数据库错误日志访问权限和应用源码。PostgreSQL 建议配置 log_lock_waits = on 与 deadlock_timeout = 1s,MySQL 建议 innodb_print_all_deadlocks = ON。重试逻辑需捕获 PostgreSQL 错误码 40P01 与 MySQL 错误码 1213,最多重试 3 次并加短随机延迟。
适用场景:订单处理等锁顺序冲突、MySQL 队列表间隙锁死锁、父子表外键死锁等场景,以及死锁频率监控与告警。
限制:资料未提供具体收费、价格、平台支持范围与效果数据,暂未提供;MongoDB 的具体操作步骤在资料中亦未展开。