) 或 间隙被其它事务插入记录(幻读问题), 从而导致数据不一致, 所以MySQL的解决方案就是把所有扫描过的索引记录和间隙都锁上, 这也就 发生了我们看到的锁表!...`ct`
ADD INDEX `idx_abc_name`(`abc`, `name`);
但更新sql语句未按照最左前缀, 直接按`name=`更新,这样就会**导致索引失效**:
update ct...尽可能减少检索条件范围, 范围越大就越可能被MySQL成本计算太高,从而导致索引失效!
尽可能控制事务大小,减少锁定时间
涉及事务加锁的sql语句尽可能放在事务最后执行!...事务的权重
trx_mysql_thread_id 事务线程 ID,可以join关联PROCESSLIST.ID
trx_query 事务正在执行的 SQL 语句
trx_operation_state...通过对上面的表进行查询, 当我们发现某个事务阻塞了很多事务, 并且执行时间很长时, 我们可以手动中止它, 只需要找到INNODB_TRX.trx_mysql_thread_id,然后调用kill命令: