测试
开启事务,更新记录,并且不提交
找出锁记录
-- object_name 填表名
SELECT * FROM performance_schema.data_locks where object_name='goods';
- 可以看到id=1的记录加了锁
- thread_id 为 123,但是这个 thread_id 不能用来kill,得找出 processlist_id才可以
- engine_transaction_id 为 905797
根据thread_id找出process_list_id
select * from performance_schema.threads where thread_id=123;
- processlist_id 为83, 使用kill 命令杀掉线程要用 processlist_id (如kill 83 就可以解锁了)
根据事务id找出事务对应的线程
-- 上面得到了 engine_transaction_id = 905797
SELECT * FROM information_schema.INNODB_TRX where trx_id=905797;
- 可以看出mysql线程id为 83,这个也是 processlist_id,kill 要用到
在processlist找到线程信息
select * from information_schema.PROCESSLIST where ID=83;
解锁
kill 83
- kill 线程后再查询 data_locks 表就没记录了,也就解锁了