有次遇到一个执行得很慢的大事务,就把它kill掉了,但是发现show processlist;还是能看到kill的sql,sql的状态虽然变为了killed,但是没有真正杀掉,这个时候可以看下事务回滚的进度,能大致了解到该sql什么时候能回滚完。
查看方法:
select * from information_schema.INNODB_TRX where trx_id=事务id \G;
重点看trx_rows_locked,trx_rows_modified:
会看到trx_rows_modified值不断减少,直到其变为0,表示回滚完毕。
--如果要查看普通事务(非回滚事务)的执行进度,有次发现trx_rows_locked值是在由小变大不断变化的,不是一下子锁定的整改表,所以查看整个进度,还要参考下这个表共有多少条记录,来预估。