问题: mysql执行sql特别慢,单条sql都很慢
排查问题:
1.由于应用对mysql的并发操作较大
show processlist;
大概有1000多的并发sql,积压,现在先解决sql挤压的问题
将mysql的线程数调大,这个配置和cpu个数一样大小
set global innodb_thread_concurrency=32
观察一段时间,发现挤压情况减少,仍然有部分sql执行过慢
2.对执行过慢的sql,检测索引使用情况
explain *
发现有索引没有添加, 对表添加btree索引,解决问题
3.还有一种sql有时候比较慢,sql类型如下
select * from table where type=1 order by id desc limit 100
id是主键
检测该sql只用了type的索引, 没有使用id的索引
这种简单sql 只会使用一个索引,所以order by id没使用索引
两种解决方案:
(1) 强制使用主键
select * from table force(pri) where type=1 order by id desc limit 100
这样where type=1 没有使用索引,用的是id
(2)对type,id 构建组合索引
这个待验证,验证后会补充验证结果