汽配网 国内最专业的汽配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
热“雪”正当虹,长虹新款AI TV闪耀冰雪舞台 新闻
02
Dec2024
4
海信家电”换帅 “ 高玉玲接替代慧忠出任新任董事长 新闻
22
Nov2024
15
格力电器申请“格力女王”“蒙面女王”医疗器械类商标 新闻
21
Nov2024
9
2024Q3全球电视出货量达到5233万台 环比增长9.6% 新闻
19
Nov2024
12
预计2024年国内智能盒子销量同比去年萎缩20% 新闻
15
Nov2024
12
2024年电视行业用户满意度测评分数创出新高 新闻
13
Nov2024
20
追觅X50 Pro评测:从超高越障到深层清拖 重构解放用户的真谛 新闻
08
Nov2024
34
国内智能电视Q3销量萎缩 MIni LED反而暴涨6.4倍 新闻
06
Nov2024
192
追觅V16 Pro Aqua体验:吸尘洗地一机搞定 家居清洁自此无忧 新闻
29
Oct2024
38
家电以旧换新中央财政补贴已达64.03亿元 参与人数超510万 新闻
30
Sep2024
76
海信给AI电视打样,12大AI智能体全面升级大屏体验 新闻
30
Sep2024
30
海信AI电视E7N正式发布,引领AI画质新标杆 新闻
30
Sep2024
25
小米明年将布局东南亚家电市场 新闻
29
Sep2024
52
追觅X50系列:一个关于六厘米高的故事 新闻
26
Sep2024
86
追觅科技吸尘器新品惊艳亮相,以行业最强清洁力领衔行业新高度 新闻
26
Sep2024
180
全球首创6cm越障技术,追觅X50系列填补全屋覆盖新版图 新闻
26
Sep2024
319
引领行业多项技术革新,追觅科技重磅发布T40 Ultra洗地机 新闻
25
Sep2024
236
追觅发布头皮护理吹风机D10 驱动头皮养护体验革新 新闻
25
Sep2024
304
激光显示全面向新发展,未来激光电视主机仅有iPad大小 新闻
19
Sep2024
89
海信激光电视星光S1 Max正式发布!120吋墅式巨幕专为大宅而生 新闻
19
Sep2024
38
石头分子筛洗烘一体机H1 Air评测:同级别洗烘一体机天花板 新闻
18
Sep2024
426
石头G20S Ultra评测:7.98cm超薄机身打破物理极限 能跨越不缠绕清洁新突破 评测
13
Sep2024
95
萤石发布AI扫拖机器人新品RS20 Pro Ultra 新闻
12
Sep2024
72
石头全新洗地机A30、A30Pro发布:长续航 强吸力 1999元起 新闻
09
Sep2024
383
石头迷你洗烘一体机Q1体验:又甜又强,迷你洗烘一体机新标杆 新闻
06
Sep2024
37
8月国内电视出货量环比增长27% 海信、TCL、小米继续领跑市场 新闻
05
Sep2024
32
石头发布全新Z1分子筛洗烘一体机:超薄平嵌 4599元预售 新闻
04
Sep2024
32
掀起扫地机器人全能化革命 石头P20 Pro评测 评测
30
Aug2024
341
TCL发布双系统平嵌冰箱T9 Pro:不串味真平嵌 解锁家居生活松弛感 新闻
07
Aug2024
TCL
34
华为发布智慧屏85英寸S5和S5 Pro 鸿鹄自研平台 支持4K全网投屏 新闻
06
Aug2024
63
飞利浦美肤仪因质量检验不达标被罚没25万余元 新闻
25
Jul2024
28
市场机构:大尺寸OLED面板市场有望迎来强劲反弹 新闻
23
Jul2024
31
海信针对强降雨受灾地区推行旗下家电品牌免费检修服务 新闻
23
Jul2024
220
小米针对强降雨受灾地区受损家电类产品提供免费检修服务 新闻
23
Jul2024
39
TCL电子发布上半年预报:量子点、Mini LED出货量大增 净利润暴涨 新闻
22
Jul2024
224
供应商侵权小米是否要背锅?格力重申小米间接持有侵权方股份 新闻
10
Jul2024
562
小米回应侵权格力诉讼案:未收到任何环境电器相关诉讼 新闻
10
Jul2024
43
格力状告小米米家电扇侵权一审胜诉 判赔185万并停售 新闻
10
Jul2024
38
海信、小米和TCL领跑2024年上半年中国电视市场,前8大品牌市场份额近九成 新闻
08
Jul2024
69
云鲸洗地机S2评测:专为中国家庭清洁而生的清洁神器 评测
27
May2024
388
追觅科技多项全球首创技术获沙利文权威认证  引领智能清洁行业未来 新闻
23
May2024
112
追觅科技“满分之选”发布会召开,推出两大系列六款洗地机新品 新闻
16
May2024
94
追觅洗地机6大“满分”新品重磅来袭!多项革新技术拓宽行业创新边界 新闻
16
May2024
98
充电革命!理想汽车突破50万家庭充电桩安装,引领行业新风尚 新闻
14
May2024
103
石头手持无线吸尘器 H5评测:好看又实用的高性价比清洁神器 评测
06
May2024
457
TCL再发3款王炸级Mini LED电视新品,Q10K、Q10K Pro和T7K向影音爱好者致敬 新闻
22
Apr2024
213
六大升级!TCL典藏级 Mini LED电视Q10K,同价位画质霸主来了 新闻
22
Apr2024
313
2024重磅级Mini LED新品Q10K Pro亮相,画质表现呈断层式领先 新闻
22
Apr2024
255
先锋旗舰石头V20深度体验:下一代清洁神器标杆 新闻
29
Mar2024
6358
定义清洁新标准!石头G20S正式发布上市 新闻
29
Mar2024
1840
石头G20S深度体验:直击用户痛点 重塑扫拖机器人清洁新体验 评测
29
Mar2024
1385