Mysql 踩坑及优化笔记
Q: server has gone away
排查方向:
- 查看 server 端的 wait_timeout
1
| mysql> show global variables like '%timeout%';
|
- client 端使用连接池,并把连接池的超时检测值设置为小于 wait_timeout 的值。
Q: 使用了 order by limit 语句导致查询慢
排查方向:
- 查看执行计划
- 检查 session 数,是不是有太多并发连接
1
| mysql> show processlist;
|
- 变更 sql 语句
1
2
3
4
5
6
| SELECT * FROM large ORDER BY id LIMIT 10000, 30
-- 变更为 (id加到条件里)
SELECT * FROM large WHERE id > 10000 ORDER BY id LIMIT 30
-- 或
SELECT * FROM large WHERE id >=(SELECT id FROM large ORDER BY id LIMIT 10000, 1) ORDER BY id LIMIT 30
|