汽配网 国内最专业的汽配B2B商务网

环信李楠:IM客户端数据库加载过程优化

IM通讯里面有两个重要的数据概念,一个是会话,一个是会话中的消息。

在系统初始化时,这两部分都要从数据库中加载到内存中。

数据组织结构是ConversatonManager包含多个会话,每个会话含有消息列表。

环信李楠:IM客户端数据库加载过程优化

每次系统启动的时候,首先查询会话列表,然后对每一个会话加载其中的消息。对应的伪码

环信李楠:IM客户端数据库加载过程优化

因为每次查询都要涉及数据库操作,导致加载时间很长,而且大量的IO操作也会导致耗电量增加,所以这部分加载过程,是我们优化的重点。

思路很简单:一条SQL语句做完所有事情,避免for循环,避免多次遍历数据库。

修改后的结构是:

环信李楠:IM客户端数据库加载过程优化

这样大量的细节隐藏在SQL语句实现中。

这里面的实现有两种情况:

1. 一种是每个会话只加载一条消息记录。

2. 另一种是每个会话加载多条消息记录。

1. 每个会话只加载一条消息记录(假设是最后一条消息),这种情况可以使用关键字group by 处理:select *, max(msgTime) from xxx_table group by conversation,这种情况比较好理解,而且网上类似的问题很多,很容易找到答案。

2. 对于每个会话要求加载多条消息的情况(消息按照时间排序),我的思路是在group by, order by, limit这些关键字中寻找答案。

先在网络上寻找答案,寻找一些类似的实现,可惜都不理想。

有的实现就是把for循环转移到sql语句中,利用游标的概念,但是计算的数量级并没有下降,使用我本地的较大的数据量进行试验,执行时间过长。

或者是看到oracle数据库中有解决方案,但是需要使用关键字partition,这个应该是oracle数据看到经常会有类似的问题而提出的专用关键字。

对于mysql, sqlite等常用数据库,没法移植该实现。

最终我使用的方法是

select * from xxx_table order by conversation, msgTime desc.

这样整个表单进行排序,首先按照会话名称进行排序,然后按照消息时间排序。

还剩下一个条件没有满足,就是每个会话消息的限定个数。

把个数的遍历放在外面实现,通过一个while循环将会话中超出limit部分的消息剔除。

伪码:

环信李楠:IM客户端数据库加载过程优化

这种方法的缺点是cursor会把整个表单都返回到用户空间,然后把所有的数据在用户空间都遍历一遍,有多余的操作。

不属于最优实现。

优点是两次排序使用order by,可以由数据库实现,这部分执行效率比较高,然后一次遍历cursor就执行完剩余操作,执行效率在接受范围之内,和改动之前相比效率提升至少一个数量级。

测试结果:一万条消息记录,一千个会话,执行时间大概4秒

补充一下,对于非数据库专业人员来说,有一点需要注意:

group by, order by, limit这些关键字在sql语句中有强制的顺序要求,limit , order by,都不能写到group by前面。

下面是我在寻找这个问题过程中看到的一些帖子,第一行是文章标题,后面是我看后的感受。如有冒犯,敬请原谅。

[SQL中Group分组获取Top N方法实现]

游标方法可取,网上讨论说运行比较慢。

[]一条SQL语句搞定分组并且每组限定记录集的数量]

仅适用于oracle

[]mysql实现每组取前N条记录的sql,以及后续的组数据量限制]

好像是可以,没看明白

[]SQL--分组显示数据,显示每组的前几行数据]

http://blog.163.com/peng_peng1028/blog/static/107463820111019240379/

像是答案,效率好像很低

[取每组前几条记录的SQL写法]

http://blog.sina.com.cn/s/blog_412897e10100r2rq.html

该页面提供两种方法,都尝试过,效率太低,杀掉程序时还没执行完

本文章版权归环信所有,转载请注明出处。

责任编辑:barcasoul
0
小米武汉智能家电工厂动工两个月来主体建设进度已完成60% 新闻
25
Jun2025
182
最高网络安全标准,追觅扫地机获UL Solutions钻石级安全认证 新闻
18
Jun2025
23
云鲸S3 island体验:首创全自动自滤净化系统 免维护体验断档领先 评测
05
May2025
59
百项创新技术直面用户“痛点” 追觅扫地机召开2025首场用户沟通会 新闻
27
Apr2025
47
让家中空气“活”起来 追觅PM系列空气净化器国补好价一台顶多台 新闻
09
Apr2025
55
MiniLED电视今年出货量有望超越OLED产品 新闻
31
Mar2025
70
催更效果拉满!高对比度屏+万象分区,TCL T7L&Q9L系列全球首发 新闻
31
Mar2025
TCL
314
追觅X50系列闪耀AWE2025 追觅工程师:具身智能机械臂或将成为标配 新闻
24
Mar2025
54
小米推出米家新款隐藏式智能窗帘 售价599元 新闻
24
Mar2025
62
TCL冰洗尖端新品闪耀AWE 引领白家电革新浪潮 新闻
20
Mar2025
TCL
52
震撼发布!TCL冰洗新品携硬核科技亮相AWE 新闻
20
Mar2025
TCL
249
TCL冰洗创新科技亮相发布会 智未来·焕发生命力 新闻
20
Mar2025
TCL
202
扫地机全球销量&销额双第一 石头科技全系新品闪耀AWE2025 新闻
20
Mar2025
396
亲测海尔AWE展馆:无人家务不再是遥不可及的“大饼” 新闻
20
Mar2025
303
Leader接招 新闻
20
Mar2025
63
追觅科技发布空气净化器新品 构建四季空气生态系统 新闻
19
Mar2025
53
追觅自集尘吸尘器Z50 Station发布 20万转/分钟高速马达刷新清洁上限 新闻
19
Mar2025
52
追觅尖端旗舰 T50 Ultra洗地机发布:破解行业难题 解锁清洁新高度 新闻
19
Mar2025
57
追觅多项首创技术亮相新品发布会 重塑清洁行业格局 新闻
19
Mar2025
53
当电视学会「隐形」,TCL Q10L系列的空间美学实践 新闻
19
Mar2025
TCL
53
2024全球扫地机器人出货量同比增11% 石头、科沃斯增势强劲 新闻
17
Mar2025
329
石头自清洁扫拖机器人P20 Ultra评测:旗舰配置拉满的全能性价比机皇 评测
12
Mar2025
627
画质信仰再次升级!TCL率先推出第四代液晶电视Q10L系列 新闻
10
Mar2025
TCL
453
石头科技公布2024年业绩快报 营收同比增37.8% 新闻
05
Mar2025
648
追觅机械臂洗地机半年战绩辉煌,国内外市场齐头并进 新闻
27
Feb2025
53
石头科技重构清洁想象,首创五轴仿生机械手打破传统清洁边界 新闻
25
Feb2025
274
石头G30 Space探索版评测 开创扫地机机械手清洁时代 评测
25
Feb2025
571
世俱杯倒计时4个月:海信发布创新技术全面提升观赛体验 新闻
20
Feb2025
77
海信全球首款RGB-Mini LED电视国内首次亮相 新闻
20
Feb2025
372
2024年国内电视出货量创15年新低 海信、小米、TCL继续领跑市场 新闻
24
Jan2025
814
清洁电器混战,萤石干湿混吸的洗地机器人会是新风口吗? 新闻
22
Jan2025
19506
电视要涨价?台湾地区地震或增加大尺寸面板供应难度 新闻
22
Jan2025
107
追觅H40 Ultra洗地机评测:85℃高温溶污领衔 再创洗地行业新高度 新闻
09
Jan2025
165
重新定义下一代家用机器人 石头科技CES2025惊艳全球 新闻
08
Jan2025
92
三线结构光与升降LDS激光雷达 石头自清洁扫拖机器人G30导航避障新里程 新闻
08
Jan2025
60
追觅下一代扫地机器人形态曝光:长出灵巧手,未来或成家庭服务机器人 新闻
03
Jan2025
31
热“雪”正当虹,长虹新款AI TV闪耀冰雪舞台 新闻
02
Dec2024
280
海信家电”换帅 “ 高玉玲接替代慧忠出任新任董事长 新闻
22
Nov2024
183
格力电器申请“格力女王”“蒙面女王”医疗器械类商标 新闻
21
Nov2024
119
2024Q3全球电视出货量达到5233万台 环比增长9.6% 新闻
19
Nov2024
113
预计2024年国内智能盒子销量同比去年萎缩20% 新闻
15
Nov2024
134
2024年电视行业用户满意度测评分数创出新高 新闻
13
Nov2024
134
追觅X50 Pro评测:从超高越障到深层清拖 重构解放用户的真谛 新闻
08
Nov2024
255
国内智能电视Q3销量萎缩 MIni LED反而暴涨6.4倍 新闻
06
Nov2024
331
追觅V16 Pro Aqua体验:吸尘洗地一机搞定 家居清洁自此无忧 新闻
29
Oct2024
205
家电以旧换新中央财政补贴已达64.03亿元 参与人数超510万 新闻
30
Sep2024
1481
海信给AI电视打样,12大AI智能体全面升级大屏体验 新闻
30
Sep2024
1433
海信AI电视E7N正式发布,引领AI画质新标杆 新闻
30
Sep2024
1444
小米明年将布局东南亚家电市场 新闻
29
Sep2024
1472
追觅X50系列:一个关于六厘米高的故事 新闻
26
Sep2024
311
追觅科技吸尘器新品惊艳亮相,以行业最强清洁力领衔行业新高度 新闻
26
Sep2024
309