全部产品
Search
文档中心

数据库自治服务 DAS:缓存分析

更新时间:Jul 22, 2024

数据库自治服务DAS支持缓存分析功能,通过分析Redis的备份文件,可以快速发现实例中的大Key,帮助您掌握Key在内存中的占用和分布、Key过期时间等信息,为您的优化操作提供数据支持,帮助您避免因Key倾斜引发的内存不足、性能下降等问题。

功能说明

缓存分析功能基于Redis持久化策略RDB(Redis Database),现已支持Redis 7.0。

使用限制

  • 目标数据库实例已接入DAS,且实例接入状态为接入正常

  • 不支持Tair磁盘型实例。

  • 只支持分析Redis数据结构和以下Tair自研数据结构:TairString、TairHash、TairGIS、TairBloom、TairDoc、TairCpc、TairZset,暂不支持分析其他Tair自研数据结构。

  • 如果目标实例规格已发生变更,则不支持分析实例变更前的备份文件。

操作步骤

  1. 登录DAS控制台

  2. 在左侧导航栏中,单击实例监控

  3. 找到目标实例,单击实例ID,进入目标实例详情页。

  4. 在左侧导航栏选择请求分析 > 缓存分析

  5. 缓存分析页右侧,单击立即分析

  6. 缓存分析对话框中,设置如下参数。

    zs

    配置

    说明

    选择分析节点

    选择需要执行缓存分析的节点ID。

    说明

    您可以选择分析整个实例,也可以只选中某个节点进行分析。

    分析方式

    根据需要,选择不同的备份文件进行分析:

    • 使用上一个备份文件:分析当前最新的备份文件。

    • 新建备份, 并使用最新的备份进行分析:立即新建一次备份,待备份完成后对其进行分析,该方式可分析实例当前的状态。

    • 选择历史备份文件:允许选择并分析任意历史备份文件。

    说明

    在分析已存在的备份文件时,请确认备份文件的时间点,是否符合预期。

    分隔符

    根据需要,输入用于识别Key前缀的分隔符。当分隔符为默认的:;,_-+@=|#时,不需要输入。

  7. 单击确定

  8. 缓存分析列表找到已完成的分析任务,在右侧操作栏中,单击详情,查看如下分析结果:

    • 基本信息:目标实例基本属性和分析方法等情况。

    • 相关节点:Redis社区版集群架构内各个节点的内存情况和Key统计信息。

      说明

      只有选择分析整个Redis社区版集群架构实例时,才会展示该信息。

    • 详情:目标实例的内存占用情况、Key内存占有的近一周日均增长量Key总数量Key内存占有情况Key数量分布情况Elements内存占用情况Elements数量分布情况Key过期时间分布 (内存)Key过期时间分布 (数量),以及内存占有量、总数量、Key前缀在前100的大Key信息。

常见问题

  • Q:为什么缓存分析结果展示的Key内存占有会比实际使用的内存小?

    A:因为缓存分析结果实际只是解析了Key和对应value在RDB中序列化后占用的大小,这个只占用了used_memory中的一部分,used_memory还包含了如下部分:

    • Key和value所对应的struct和指针大小。在jemalloc分配后,字节对齐部分所占用的大小也没计算在used_memory中,例如在2.5亿Key的数量下,struct、指针、字节对齐这三部分的大小加起来约有2~3 GB。

    • 客户端输出缓冲区、查询缓冲区、AOF重写缓冲区和主从复制的backlog,这些也没计算到缓存分析中。

  • Q:Redis缓存分析的前缀分隔符是什么?

    A:目前Redis缓存分析的前缀分隔符是按照固定的前缀:;,_-+@=|# 区分的字符串。

  • Q:为什么Redis缓存分析中String类型Key的元素数量和元素长度是一样的?

    A:在Redis缓存分析中,针对String类型的Key,其元素数量就是其元素长度。

  • Q:如何处理报错decode rdbfile error: rdb: unknown object type 116 for key XX

    A:该报错表示Redis实例里面存在非标准的Bloom结构,您可以把这些Bloom结构的Key删掉,或者将Redis实例升级到Redis企业版(Tair),并将非标准的Bloom结构修改为TairBloom结构。

  • Q:如何处理报错decode rdbfile error: rdb: invalid file format

    A:该报错表示所选的备份文件无效,请检查实例是否在该备份时间点后进行了变配;或者实例是否开启了透明数据加密TDE(该功能无法分析已加密的信息)。

  • Q:如何处理报错decode rdbfile error: rdb: unknown module type

    A:该报错表示备份文件中存在Tair自研数据结构,暂不支持分析。

  • Q:如何处理新建备份, 并使用最新的备份进行分析后报错XXX backup failed

    A:该实例当前存在正在执行的BGSAVE或BGREWRITEAOF命令,导致创建用于缓存分析任务的备份时出现了失败的情况。建议您选择业务低峰期新建备份, 并使用最新的备份进行分析或者选择历史备份文件进行分析。

  • Q:为什么Stream数据结构的缓存分析结果是实际值的数倍?

    A:Stream数据结构底层使用基数树(Radix Tree)和紧凑列表(listpack),数据结构复杂。缓存分析功能目前无法精确获得此类复杂数据结构的内存占用情况,只能进行估算,因此缓存分析结果存在偏差。

    说明

    缓存分析结果的偏差仅为数据统计偏差,不影响数据库实例的功能。

相关文档

当您在Redis控制台使用缓存分析功能时,请参见离线全量Key分析

相关API

API

描述

CreateCacheAnalysisJob

创建缓存分析任务。

DescribeCacheAnalysisJob

查询缓存分析任务详情。

DescribeCacheAnalysisJobs

查询缓存分析任务列表。