MySQL:如何找出长时间执行的查询SQL和事务SQL
MySQL中存在长时间运行的SQL和事务(超过120S),对数据库而言是潜在隐患,这颗“雷”总有爆炸的一天。 比如,修改表结构之前,切记要在从库检查是否有长时间运行的SQL,有请杀掉,避免从库产生元数据锁引起的从库延迟。 建议定时扫描MySQL中长时间运行的SQL,并kill掉,排除隐患。
1 2 3 4 5 6 7 8 9 10 11 12 |
SELECT trx.trx_id, trx.trx_started, trx.trx_mysql_thread_id, trx.trx_query FROM INFORMATION_SCHEMA.INNODB_TRX AS trx INNER JOIN INFORMATION_SCHEMA. PROCESSLIST AS pl ON trx.trx_mysql_thread_id = pl.id WHERE trx.trx_started < CURRENT_TIMESTAMP - INTERVAL 120 SECOND AND pl. USER <> 'system_user'; |
Read more