慢查询
客户端生命周期
两点说明:
- 慢查询发生在第3阶段
- 客户端超时不一定是慢查询,但是慢查询是客户端超时的一个可能的原因
慢查询的两个配置
slowlog-max-len
它决定 slow log
最多能保存多少条日志, slow log
本身是一个 FIFO 队列,当队列大小超过 slowlog-max-len
时,最旧的一条日志将被删除,而最新的一条日志加入到 slow log
。
- 先进先出队列
- 固定长度,队列满后,第一个进入队列的将会被踢出
- 保存在内存中
slowlog-log-slower-than
它决定要对执行时间大于多少微秒(microsecond,1秒 = 1,000,000 微秒)的查询进行记录。
- 慢查询阈值(单位:微秒)
- slowlog-log-slower-than=0,记录所有命令
- slowlog-log-slower-than<0,不记录任何命令
配置方法
- 默认值
1 | config get slowlog-max-len = 128 |
- 修改配置文件重启
- 动态配置
慢查询命令
- slowlog get [n]:获取慢查询队列
- slowlog len:获取慢查询队列长度
- slowlog reset:清空慢查询队列
运维经验
- slowlog-max-len 不要设置过大,默认10ms,通常设置1ms
- slowlog-log-slower-than 不要设置过小,通常设置1000左右
- 理解命令的生命周期
- 定期持久化慢查询