第 9 站:锁、死锁与在线变更
本站目标
用两个连接重现阻塞和死锁,区分记录锁、gap/next-key lock 与 metadata lock。
sql
SELECT ENGINE_TRANSACTION_ID, THREAD_ID, EVENT_ID, OBJECT_NAME,
INDEX_NAME, LOCK_TYPE, LOCK_MODE, LOCK_STATUS, LOCK_DATA
FROM performance_schema.data_locks;真实边界
锁住的是索引记录或范围;缺少合适索引会扩大扫描和加锁影响。在线 DDL 也可能在开始或结束阶段等待 metadata lock。
无答案练习
构造两个事务以相反顺序更新两笔订单,捕获死锁证据。