在使用阿里云的RDS数据库实例做一些数据量很大的sql或存储过程查询操作时,经常导致IOPS或CPU爆满,导致死锁,没有反映,实例直接瘫痪。这个时候要不就重新数据库实例,或者使用命令kill掉语句。
SHOW PROCESSLIST
kill xxxx
MYSQL出现WAITING FOR TABLE METADATA LOCK
使用管理员权限登录mysql数据库查看未提交的事务:select * from information_schema.innodb_trx
其中字段解释如下:
- trx_state: 事务状态,一般为RUNNING
- trx_started: 事务执行的起始时间,若时间较长,则要分析该事务是否合理
- trx_mysql_thread_id: MySQL的线程ID,用于kill
- trx_query: 事务中的sql