1.生命周期
- 慢查询发生在第3阶段,是由命令引起的
- 客户端超时不一定是慢查询,但慢查询是客户端超时的一个可能因素
2.和慢查询相关的两个配置
(1).showlog-max-len
它决定slowlog最多能保存多少条日志, slowlog本身是一个FIFO队列,当队列大小超过slowlog-max-len时,最旧的一条日志将被删除,而最新的一条日志加入到slowlog。
- 保存在内存内
- 先进先出队列
- 固定长度,慢查询长度
- 默认值为128
(2).showlog-log-slower-than
它决定要对执行时间大于多少微秒的查询进行记录。
- 慢查询阈值(单位为微秒),默认值为10000
- showlog-log-slower-than = 0表示将所有命令记录为慢查询
- showlog-log-slower-than < 0表示不会将任何命令记录为慢查询
3.配置方法
(1).获取默认值
config get slowlog-max-len
config get slowlog-log-slower-than
(2).动态配置
config get slowlog-max-len 1000
config get slowlog-log-slower-than 1000
4.慢查询命令
-
获取慢查询队列
showlog get n
-
获取慢查询队列长度
showlog len
-
情况慢查询队列
showlog reset
5.运维经验
- showlog-max-len不要设置过大,默认为10ms,通常设置为1ms,实际中是根据QPS进行设置即可
- showlog-log-slower-than不要设置过小,通常设置1000左右
- 理解命令的生命周期
- 定期持久化慢查询