redis 学习(10)-- redis 慢查询

redis 慢查询

什么是慢查询

MySQL会记录下查询超过指定时间的语句,我们将超过指定时间的SQL语句查询称为慢查询,都记在慢查询日志里。

redis 的生命周期

  1. 客户端向Redis服务器发送命令
  2. 命令请求在请求队列中排队等待处理
  3. 执行命令
  4. 返回命令结果
redis 学习(10)-- redis 慢查询_第1张图片

redis 慢查询

  • 慢查询发生在生命周期的第三阶段,是指仅仅执行命令阶段比较慢被称为慢查询。
  • 客户端超时不一定是慢查询,但是慢查询时是客户端超时的一个可能因素。

redis 慢查询相关配置

1. slowlog-max-len

它决定了慢查询日志最多能保存多少条日志,slow log本身是一个内存中的FIFO队列,当队列大小超过slowlog-max-len时,最旧的一条日志将被删除,而最新的一条日志加入到slow log中。

  • 默认值:128
  • 支持动态配置
2. slowlog-log-slower-than

它决定要对执行时间大于多少微秒(microsecond , 1秒=1,000,000 微妙)的查询进行记录

  • 默认值:10000
  • slowlog-log-slower-than = 0 ,记录所有命令
  • slowlog-log-slower-than < 0 , 不记录任何命令
  • 支持动态配置

慢查询配置方法

1. 默认值
  • config get slowlog-max-len = 128
  • config get slowlog-log-slower-than = 10000
2. 修改配置文件重启
3. 动态配置
  • config set slowlog-max-len 1000
  • config set slowlog-log-slower-than 1000

慢查询相关命令

1. slowlog get [n]

含义:获取慢查询列表中的慢查询信息

2. slowlog len

含义:获取慢查询队列长度

slowlog reset

含义:清空慢查询队列

慢查询运维经验

  • slowlog-max-len 不要设置过大,默认10ms,通常设置1ms
    • 因为Redis的qps是万级别的,即每秒应能执行10000次请求
    • 当一条命令执行1ms时,那每秒只能执行1000次请求
  • slowlog-log-slower-than 不要设置地过小,通常设置1000左右
  • 需要理解命令的生命周期
  • 定期持久化慢查询
    • 因为慢查询只存储于内存中,一宕机慢查询数据就会丢失
    • 通过定期slowlog get将慢查询数据转存到MySQL或者ES中

你可能感兴趣的:(redis 学习(10)-- redis 慢查询)