所以核心问题在于:能否进一步降低 Segments 大小?
维度爆炸问题在业界都没有很好的解决方案 , 大家要做的也只能是尽可能规避它 , 因此这里 , 团队在查询层实现了子维度表的拆分以尽可能解决这个问题 , 用空间换时间 , 具体做法为:
● 查询层支持按照用户请求中的查询维度 , 匹配最小的子维度表 。
![微信海量数据查询如何从1000ms降到100ms?](http://img.jiangsulong.com/230602/1640262R2-6.jpg)
文章插图
04
优化成果
4.1 缓存命中率>85%
在做完所有改造后 , 最重要的一点便是缓存命中率 。因为大部分的请求来自于1天前的历史数据 , 这为缓存命中率提供了保障:
- 子查询缓存完全命中率(无需查询Druid):86%
- 子查询缓存部分命中率(秩序查询增量数据):98.8%
最明显的效果就是 , 查询访问 Druid 的请求 , 下降到了原来的 10% 左右 。
4.2 查询耗时优化至 100ms
在整体优化过后 , 查询性能指标有了很大的提升:
平均耗时 1000+ms -> 140ms;P95:5000+ms -> 220ms 。
![微信海量数据查询如何从1000ms降到100ms?](http://img.jiangsulong.com/230602/16402C262-7.jpg)
文章插图
![微信海量数据查询如何从1000ms降到100ms?](http://img.jiangsulong.com/230602/1640264O9-8.jpg)
文章插图
05
结语
微信多维指标监控平台 , 是微信监控平台的重要组成部分 。在分析了用户数据查询行为之后 , 我们找到了数据查询慢的主要原因 , 通过减少单 Broker 的大跨度时间查询、减少 Druid 的 Segments I/O 次数、减少 Segments 的大小 。我们实现了缓存命中率>85%、查询耗时优化至 100ms 。当然 , 系统功能目前也或多或少尚有不足 , 在未来团队会继续探索前行 , 力求使其覆盖更多的场景 , 提供更好的服务 。
以上是本次分享全部内容 , 欢迎大家在评论区分享交流 。如果觉得内容有用 , 欢迎转发~
作者:仇弈彬
来源:微信公众号:腾讯云开发者
出处
:https://mp.weixin.qq.com/s/_hqYCY-ySKxSkYNC5WXH2g
【微信海量数据查询如何从1000ms降到100ms?】
推荐阅读
- 杨紫|杨紫微信名曝光,对好友有求必应,是个既善良也幽默的姑娘
- 微信锁定功能怎么用 微信新增锁定功能使用教程[多图]
- 热搜!微信新增锁定功能!网友热议......
- 教你如何打开微信隐藏的拍照功能?打开后照片清晰10倍,简单实用
- 微信视频通话也能开美颜了,附开启方法
- 微信视频聊天怎样才能美颜?
- iPhone “应用锁”来了,可以给微信等 App“上锁”,操作简单
- 微信昵称特殊符号太阳怎么设置 微信昵称特殊符号不让用
- 微信这个开关要尽快清理,不然微信被别人登录了,你可能都不知道
- 微信关掉哪些功能节约内存 关闭微信的这三项功能