Mysql事务未提交造成表锁-线上事故

问题描述:ETL抽取数据库基本数据迟迟没有完成,造成下游依赖,延迟从而引起了业务功能.
问题定位:Mysql数据库

从数据库查询出有一堆慢查询

Waiting for table flush 状态的sql

基本从上可看出有DML操作或者锁表了
查询是否存在事务未提交

SELECT a.trx_started,a.trx_state,b.user,b.host,b.DB,b.COMMAND,b.TIME,b.state,b.INFO,b.id from information_schema.innodb_trx a join information_schema.PROCESSLIST b
on a.trx_mysql_thread_id=b.id where trx_state="RUNNING" order by b.time desc limit 18

从事务结果看出,存在复杂却未使用索引的sql,长时间未提交的事务造成锁表.
mysql innodb引擎配置项innodb_lock_wait_timeout 超时可报错

你可能感兴趣的:(异常,数据库,日常bug)