问题描述
客户反馈数据库CPU占用高时系统就卡,当时远程正好碰上很卡都无法登录,一直转圈,使用jstack生成的线程日志发现mysql连接阻塞,出现表锁等待。检查数据库服务器CPU占用很高,使用 show processlist发现很多一直卡住的sql进程,通过show open tables where in_use >0 or name_locked >0查询发现有锁表存在,再查看正在锁得事物select * from information_schema.innodb_locks;发现锁住的表如下图:
分析过程
通过show engine innodb statusG;可以查看TRANSACTIONS相关信息。
这样就找到导致锁表的源头,会签给相关开发分析。