活动合约
查询期望的字段
| 字段 | 类型 | 为什么存在 |
|---|---|---|
| timestamp_utc | Timestamp | 缓存查找完成时间(UTC)。 |
| cache_key_pattern | Utf8 | 有界模式,例如产品:{id},绝不是原始密钥。 |
| cache_hit | Boolean | 查找是否返回缓存值。 |
| concurrent_misses | Int64 | 观察到相同图案的飞行中填充。 |
| backend_duration_ms | Float64 | 回退持续时间;命中为零。 |
| environment | Utf8 | 部署环境。 |
DataFusion SQL
复制查询
sql
SELECT
cache_key_pattern,
COUNT(*) AS requests,
SUM(CASE WHEN cache_hit THEN 1 ELSE 0 END) AS hits,
SUM(CASE WHEN cache_hit THEN 0 ELSE 1 END) AS misses,
100.0 * SUM(CASE WHEN cache_hit THEN 0 ELSE 1 END)
/ NULLIF(COUNT(*), 0) AS miss_rate_pct,
MAX(concurrent_misses) AS maximum_concurrent_misses,
AVG(CASE WHEN cache_hit THEN NULL ELSE backend_duration_ms END)
AS average_backend_duration_ms
FROM cache_request_events
WHERE timestamp_utc >= now() - INTERVAL '24 hours'
AND environment = 'production'
GROUP BY cache_key_pattern
ORDER BY maximum_concurrent_misses DESC, cache_key_pattern;此只读查询是针对空类型表计划和执行的 阿帕奇 DataFusion 45.2.0。确定性样本输出是综合的并单独审查;根据您自己的数据验证字段类型、阈值和业务定义。 阅读测试方法。
查询结果
缓存未命中和踩踏指示器
产品查找将 50% 的错过率与 31 个并发填充和较高的后端成本结合起来。
product:{id}
50%
comparison 31%
feature-flags:{account}
12.5%
comparison 7%
| cache_key_pattern | requests | hits | misses | miss_rate_pct | maximum_concurrent_misses | average_backend_duration_ms |
|---|---|---|---|---|---|---|
| product:{id} | 10 | 5 | 5 | 50 | 31 | 232 |
| feature-flags:{account} | 8 | 7 | 1 | 12.5 | 7 | 75 |
综合示例输出。在将其用于操作决策之前,针对您自己的事件架构和阈值运行查询。
SQL 是如何工作的
- 1分组键是有界应用程序定义的模式,而不是高基数原始缓存键。
- 2缺失率反映了效率,而最大并发缺失则暴露了突发行为。
- 3后端持续时间仅针对未命中进行平均,因为命中不会执行回退。
需要决定的边缘情况
- 在查找时间或填充开始时一致地定义 concurrent_misses。
- 当预计缓存变暖时,将冷启动部署与稳态流量分开。
- 当后端持续时间有重尾时,使用百分位数而不是平均值。
推荐仪表板
- 散点图:miss_rate_pct 与 maximum_concurrent_misses
- 趋势:按缓存键模式划分的未命中和后端持续时间
- 表:后端工作的顶部有界模式
让查询示例发挥作用
相关埋点和指南
继续分析
在真实事件中运行它
创建表,调整字段并保存结果
免费开始,发送结构化事件,并将查询结果用作图表、共享仪表板小部件或警报输入。