04-慢查询

nobility 发布于 2022-10-28 2722 次阅读


慢查询

当命令的执行时间到达预设的阈值时会加入到慢查询日志队列中,记录这些执行慢的命令有助于分析优化查询

  • 慢查询队列存储在内存中,在重启数据库后会消失,可以定期的做一些持久化
  • 慢查询队列是固定长度的,在慢的情况下,会遵循先进先出原则,将新的记录加入队列,旧的记录踢出队列

执行命令生命周期

  1. 客户端发送命令
  2. 由于Redis是单线程的,在命令到达服务端时会进入命令队列排队
  3. 当排到这条命令时,执行该命令
  4. 返回给客户端执行结果

慢查询是发生在第3阶段的,即命令执行的速度非常慢,并非网络原因

慢查询的配置项

  • 可在配置文件中进行配置
  • 也可以使用config set命令后跟配置项进行配置,相对的config get即可查看对应的配置项的值
配置项 描述 默认值
slowlog-max-len 慢查询队列的容量大小 128
slowlog-log-slower-then 慢查询的时间阈值,单位微妙,若设置负数则不会记录任何命令 10000(10毫秒)

慢查询命令

  • slowlog get:从慢查询队列中获取指定条目慢查询,若不指定条目会列出所有
  • slowlog len:获取慢查询队列中有多少个慢查询
  • slowlog reset:清空慢查询队列

慢查询的存储结构

将时间阈值设置为0后会记录所有的命令,可以清楚的看到慢查询日志队列

127.0.0.1:6379> slowlog get
1) 1) (integer) 0	            #慢查询日志的唯一ID标识,从零开始逐渐递增
   2) (integer) 1602665760    #该条命令的执行的日期时间
   3) (integer) 2						#该条命令执行所耗时间,单位微秒
   4) 1) "slowlog"			     #命令以及参数
      2) "reset"
此作者没有提供个人介绍
最后更新于 2022-10-28