前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis 怎样找出慢查询?

Redis 怎样找出慢查询?

作者头像
数据库交流
发布2022-04-25 09:16:50
1.1K0
发布2022-04-25 09:16:50
举报
文章被收录于专栏:悦专栏悦专栏

跟众多数据库的慢查询一样,平时不希望看到,但是数据库响应慢的时候,又希望能在慢查询中找到罪魁祸首。这一节内容,就来简单聊聊如何在 Redis 中找到慢查询。

Redis 可以记录执行时间超过某个阈值的命令,这个阈值由参数 slowlog-log-slower-than 控制,单位是微秒,默认值 10000。

参数 slowlog-max-len 可以控制保存慢日志的条数,Redis 底层是使用列表来存储慢查询日志,slowlog-max-len 就是列表的最大长度。当慢查询数达到该参数配置的值时,如果继续有新增的慢查询,则最早插入的慢查询会被删除。

可通过下面命令获取到所有慢查询:

代码语言:javascript
复制
127.0.0.1:6379> slowlog get
1) 1) (integer) 0
   2) (integer) 1647236811
   3) (integer) 30541
   4) 1) "SLOWLOG"
      2) "GEY"
   5) "127.0.0.1:47252"
   6) ""

慢日志中,每个结果都包含以下六个值,可与上面列子一一对应:

  1. 每个慢日志的唯一 ID;
  2. 命令执行的时间戳;
  3. 命令以及参数;
  4. 客户端IP地址和端口;
  5. 客户端名称(假如通过 client setname 设置了)。

查看有多少慢查询:

代码语言:javascript
复制
127.0.0.1:6379> slowlog len
(integer) 1

获取其中一条慢查询:

代码语言:javascript
复制
127.0.0.1:6379> slowlog get 1
1) 1) (integer) 0
   2) (integer) 1647236811
   3) (integer) 30541
   4) 1) "SLOWLOG"
      2) "GEY"
   5) "12

清空慢查询记录:

代码语言:javascript
复制
127.0.0.1:6379> slowlog reset
OK

Redis 慢查询注意点:

  • 慢查询只记录命令执行时间,并不包括命令排队和网络传输时间;
  • 生产环境 slowlog-max-len 可以配置 1000 以上,方便我们查看,Redis 记录慢查询时,会对长命令做截断操作,并不会占用过多内存;
  • slowlog-log-slower-than 默认为 10000,对 QPS 要求更高的场景,可把 slowlog-log-slower-than 调整的更小,比如 1000;
  • 如果想对慢查询做持久化,可以监听慢查询的变化,比如 slowlog get 之后,过滤出第一个字段(ID字段),如果 ID 有变化,则获取慢查询详情,写入其他其他关系型数据库中。或者借助其他工具,比如 CacheCloud。
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2022-03-14,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 悦专栏 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档