系列文章目录
第一章:sql_mode模式 第二章:optimize table、analyze table、alter table、gh-ost 第三章:InnoDB MVCC原理 第四章:sql语句执行过程 第五章:Percona Toolkit工具简介 第六章:MySQL索引 第七章:MySQL的锁 第八章:MySQL加锁分析 第九章:MySQL线上问题处理事项
前言
mysql线上问题处理的几个注意事项。
一、处理连接不工作的连接
但是需要注意,在 show processlist 的结果里,踢掉显示为 sleep 的线程,可能是有损的。从下面的两张图可以看到,通过show precesslist看到线程是sleep状态,但是查看事务表,其实这个事务还是running状态。因此为了保证无损,需要在innodb_trx表中查看事务的运行状态。
二、query_rewrite
线上出现新上线的功能sql语句错误或者没有使用上索引等问题,mysql 5.7以上版本,可以通过query_rewirte把输入的一种语句改写成另外一种模式。 比如,语句被错误地写成了 select * from t where id + 1 = 10000,你可以通过下面的方式,增加一个语句改写规则。
insert into query_rewrite.rewrite_rules(pattern, replacement, pattern_database) values ("select * from t where id + 1 = ?", "select * from t where id = ? - 1", "db");
call query_rewrite.flush_rewrite_rules();
|