首页/数据/SQL 速查/锁等待与超时参数
本包目录(311 条)
查询基础33 条连接与子查询40 条聚合与窗口函数54 条函数速查60 条
变更与事务52 条
性能与执行计划72 条

锁等待与超时参数

控制等锁的耐心:MySQL 有 innodb_lock_wait_timeout;PostgreSQL 默认无限等待,需要显式设置 lock_timeout / statement_timeout。

SQL 速查数据更新于 2026-10-12

MySQL

MySQL
SELECT @@innodb_lock_wait_timeout;   -- 默认 50(秒)
SET SESSION innodb_lock_wait_timeout = 10;

PostgreSQL

PostgreSQL
SHOW lock_timeout;                  -- 默认 0 = 无限等待
SET lock_timeout = '3s';
SET statement_timeout = '30s';
SET idle_in_transaction_session_timeout = '60s';
MySQL等锁超时返回 1205,语句被回滚
PostgreSQLlock_timeout 触发 55P03;statement_timeout 触发 57014
DDL 场景执行 ALTER 前设 lock_timeout,避免排队锁把线上拖死

易错点

  • PostgreSQL 默认无限等锁:一次阻塞的 DDL 会把后续查询全排在队列里,上线前务必设置超时
  • 设置过小会导致业务在繁忙时误报超时失败;超时值应结合业务峰值重新调参

数据来源与参考

  • MySQL 8.0 Reference Manual · InnoDB Lock Wait Timeout
  • PostgreSQL Documentation · Client Connection Defaults
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌