Introduction
Memlink用于持久化存储论坛中forum=>thread list,thread=>post list数据,下面对比了不同数据存储引擎存储上述逻辑关系的查询性能和内存开销。
Details
硬件
OS:CentOS release 4.6 (Final)
内存:4G
CPU:Intel(R) Xeon(R) CPU E5405 @ 2.00GHz (四核)
硬盘:250G SATA
数据模型
CREATE TABLE `ThreadList` (
`forumid` int(11) NOT NULL,
`threadid` char(12) NOT NULL,
`status` bit(1) DEFAULT 0,
`reply_time` datetime NOT NULL,
KEY `threadlist` (`forumid`,`reply_time`,`status`)
) ENGINE=Innodb DEFAULT CHARSET=utf8;
memlink
c:表示c客户端每秒操作成功条数,py:表示python客户端每秒操作成功条数,php:为php客户端每秒操作成功条数。mem:表示memlink server消耗内存。 insert为插入操作,range为获取列表某个范围的操作。插入的列表中的数据每条为12字节。
redis
redis测试一样每条数据是12字节。redis只测试c客户端,使用hiredis。用LRANGE命令获取列表,用LPUSH向队列插入数据。redis是默认配置。
mysql
mysql使用上面的数据库表结构。插入语句为:insert into ThreadList values (1, 'xxxx', 0, now()) 查询列表的语句为:select threadid from ThreadList where forumid=1 order by reply_time limit frompos,len
1. 一个客户端,长连接
memlink
操作 |
1w |
10w |
100w |
1000w |
insert
mem:4764K |
c:16296
py:12558
php:12153
mem:5032K |
c:14125
py:12565
php:12144
mem:6628K |
c:13868
py: 13096
php: 12521
mem:18M |
c:13187
py:12611
php:12124
mem:139M |
range first100 |
c:10874
py:8275
php:9185 |
c:11429
py:8273
php:9171 |
c:10994
py:8068
php:9136 |
c:11663
py:8256
php:10071 |
range first200 |
c:8045
py:6015
php:6544 |
c:8041
py:6017
php:6545 |
c:7863
py:5941
php:6542 |
c:7970
py:6024
php:7010 |
range first1000 |
c:1362
py:1446
php:1466 |
c:1362
py:1448
php:1468 |
c:1354
py:1440
php:1462 |
c:1362
py:1444
php:1492 |
range last100 |
c:11153
py:8137
php:8996 |
c:10318
py:7526
php:8263 |
c:5519
py:4410
php:4691 |
c:112
py:97
php:97 |
range last200 |
c:7938
py:5956
php:6461 |
c:7515
py:5629
php:6078 |
c:4615
py:3688
php:3899 |
c:111
py:96
php:97 |
range last1000 |
c:1358
py:1442
php:1458 |
c:1345
py:1421
php:1440 |
c:1209
py:1251
php:1272 |
c:103
py:91
php:91 |
redis
操作 |
1w |
10w |
100w |
1000w |
insert
mem:1060K |
15183
mem:1920K |
14997
mem:9044 |
14828
mem:78M |
14788
mem:771M |
range first100 |
1328 |
1329 |
1324 |
1332 |
range first200 |
708 |
709 |
705 |
709 |
range first1000 |
147 |
148 |
148 |
147 |
range last100 |
1221 |
212 |
19 |
2 |
range last200 |
675 |
184 |
19 |
2 |
range last1000 |
147 |
92 |
17 |
2 |
mysql
操作 |
1w |
10w |
100w |
1000w |
insert |
10891 |
10297 |
10022 |
9718 |
range first100 |
1550 |
1563 |
1559 |
1307 |
range first200 |
956 |
954 |
956 |
941 |
range first1000 |
230 |
230 |
230 |
235 |
range last100 |
31 |
3 |
0.3 |
0.04 |
range last200 |
31 |
3 |
0.3 |
0.04 |
range last1000 |
30 |
3 |
0.3 |
0.03 |
2. 一个客户端, 全部是短连接。一次请求一个连接。
memlink
操作 |
1w |
10w |
100w |
1000w |
insert
mem:4760K |
c:6560
py:6138
php:6064
mem:5108K |
c:6466
py:5990
php:5986
mem:6704K |
c:6675
py:6092
php:6010
mem:18M |
c:6719
py:6012
php:6003
mem:139M |
range first100 |
c:5467
py:4535
php:5064 |
c:5472
py:4450
php:4944 |
c:5662
py:4495
php:4712 |
c:5484
py:4475
php:4779 |
range first200 |
c:4533
py:3746
php:4124 |
c:4563
py:3693
php:4049 |
c:4709
py:3724
php:3893 |
c:4567
py:3708
php:3931 |
range first1000 |
c:1206
py:1254
php:1291 |
c:1200
py:1249
php:1285 |
c:1215
py:1253
php:1263 |
c:1202
py:1250
php:1266 |
range last100 |
c:5468
py:4451
php:4970 |
c:5229
py:4233
php:4692 |
c:3763
py:3055
php:3155 |
c:110
py:96
php:96 |
range last200 |
c:4558
py:3692
php:4053 |
c:4355
py:3545
php:3886 |
c:3323
py:2680
php:2790 |
c:110
py:95
php:96 |
range last1000 |
c:1198
py:1247
php:1284 |
c:1191
py:1226
php:1267 |
c:1096
py:1093
php:1125 |
c:102
py:91
php:91 |
redis
操作 |
1w |
10w |
100w |
1000w |
insert |
10891 |
10297 |
10233 |
10135 |
range first100 |
1058 |
1172 |
1166 |
1163 |
range first200 |
654 |
651 |
669 |
667 |
range first1000 |
146 |
145 |
145 |
144 |
range last100 |
994 |
271 |
32 |
3 |
range last200 |
630 |
233 |
32 |
3 |
range last1000 |
144 |
104 |
27 |
3 |
mysql
操作 |
1w |
10w |
100w |
1000w |
insert |
3313 |
3251 |
3108 |
3001 |
range first100 |
923 |
1158 |
1031 |
885 |
range first200 |
815 |
823 |
783 |
743 |
range first1000 |
227 |
230 |
226 |
212 |
range last100 |
20 |
3 |
0.21 |
0.02 |
range last200 |
30 |
3 |
0.3 |
0.04 |
range last1000 |
30 |
3 |
0.3 |
0.03 |
3. 10个客户端,并发长连接。
memlink内部开启4个处理线程。仅c客户端测试。
操作 |
1w |
10w |
100w |
1000w |
insert |
23021 |
22210 |
22200 |
22242 |
range first100 |
45451 |
53463 |
55645 |
48283 |
range first200 |
23768 |
33966 |
35045 |
35417 |
range first1000 |
4269 |
4305 |
4281 |
4271 |
range last100 |
53719 |
48948 |
24086 |
295 |
range last200 |
35593 |
34264 |
21830 |
292 |
range last1000 |
4285 |
4270 |
4336 |
277 |
redis
操作 |
1w |
10w |
100w |
1000w |
insert |
29401 |
30929 |
29109 |
30278 |
range first100 |
1443 |
1384 |
1396 |
1339 |
range first200 |
667 |
641 |
636 |
655 |
range first1000 |
114 |
115 |
114 |
115 |
range last100 |
1584 |
229 |
19 |
2 |
range last200 |
696 |
220 |
19 |
2 |
range last1000 |
114 |
142 |
19 |
2 |
mysql
操作 |
1w |
10w |
100w |
1000w |
insert |
13704 |
12786 |
12087 |
11023 |
range first100 |
2011 |
2059 |
2015 |
2387 |
range first200 |
1637 |
1768 |
1854 |
1614 |
range first1000 |
654 |
641 |
648 |
631 |
range last100 |
91 |
8 |
1 |
- |
range last200 |
96 |
9 |
1 |
- |
range last1000 |
91 |
8 |
1 |
- |
上面的 - 表示时间太长,数百秒也没有结果。
4. 10个客户端,并发短连接
Memlink内部开启4个处理线程。仅c客户端测试。
操作 |
1w |
10w |
100w |
1000w |
insert |
9665 |
9650 |
10078 |
10183 |
range first100 |
17400 |
17504 |
16614 |
17292 |
range first200 |
15786 |
15772 |
15964 |
16180 |
range first1000 |
3795 |
3918 |
3703 |
3250 |
range last100 |
16989 |
16502 |
13118 |
319 |
range last200 |
15915 |
15596 |
12203 |
316 |
range last1000 |
3893 |
3641 |
3332 |
299 |
redis
操作 |
1w |
10w |
100w |
1000w |
insert |
9381 |
9489 |
8993 |
8976 |
range first100 |
1695 |
1637 |
1696 |
1586 |
range first200 |
711 |
711 |
719 |
692 |
range first1000 |
118 |
115 |
116 |
114 |
range last100 |
2132 |
240 |
20 |
2 |
range last200 |
743 |
229 |
20 |
2 |
range last1000 |
120 |
174 |
19 |
2 |
mysql
操作 |
1w |
10w |
100w |
1000w |
insert |
5623 |
5621 |
5468 |
5306 |
range first100 |
2210 |
2286 |
1955 |
1611 |
range first200 |
1444 |
1791 |
1870 |
1402 |
range first1000 |
550 |
692 |
620 |
686 |
range last100 |
80 |
8 |
1 |
- |
range last200 |
94 |
9 |
1 |
- |
range last1000 |
94 |
9 |
1 |
- |
|
分享到:
相关推荐
Memlink是一个高性能、持久化、分布式的Key=>List/Queue数据引擎。正如名称中的Mem所示,所有数据都建构在内存中,保证了系统的高性能,同时使用块链进行内存压缩,使用redo-log技术保证数据的持久化。此外,Memlink...
Memlink是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,所有数据都 建构在内存中,保证了系统的高性能 (大约是redis几倍),同时使用了redo-log技术保证数据的持久...
Memlink是天涯社区开发的一个高性能、持久化、分布式的Key-list/queue数据引擎。正如名称中的memlink所示,所有数据都建构在内存中,保证了系统的高性能 (大约是redis几倍),同时使用了redo-log技术保证数据的持久化...
Java 员工管理系统项目是一个基于 Java 编程语言开发的桌面应用程序,旨在管理员工的信息、津贴、扣除和薪资等功能。该系统通过提供结构和工具集,使公司能够有效地管理其员工数据和薪资流程。 系统特点 员工管理:管理员可以添加、查看和更新员工信息。 津贴管理:管理员可以添加和管理员工的津贴信息。 扣除管理:管理员可以添加和管理员工的扣除信息。 搜索功能:可以通过员工 ID 搜索员工详细信息。 更新薪资:管理员可以更新员工的薪资信息。 支付管理:处理员工的支付和生成支付记录。 模块介绍 员工管理模块:管理员可以添加、查看和更新员工信息,包括员工 ID、名字、姓氏、年龄、职位和薪资等。 津贴管理模块:管理员可以添加和管理员工的津贴信息,如医疗津贴、奖金和其他津贴。 扣除管理模块:管理员可以添加和管理员工的扣除信息,如税收和其他扣除。 搜索功能模块:可以通过员工 ID 搜索员工详细信息。 更新薪资模块:管理员可以更新员工的薪资信息。 支付管理模块:处理员工的支付和生成支付记录 可以作为毕业设计项目参考
CAD实验报告:制药车间动力控制系统图、烘烤车间电气控制图、JSJ型晶体管式时间继电器原理图、液位控制器电路图
项目简介: 本项目将教您如何使用 Arduino 和 Python 实时数据绘图来构建温度监控系统。通过这个项目,您将学习如何从 Arduino 到 Python 进行串行通信,并实时收集和监控温度数据。 项目目标: 实时监控和绘制温度数据。 提供用户友好的操作界面。 提高用户的编程技能,特别是Arduino和Python的应用能力。 项目功能 实时温度监控: 传感器每秒读取一次温度数据,并通过串行监视器发送到Python程序。 数据保存: Python程序将温度数据保存到CSV文件中。 实时数据绘图: 使用Matplotlib库实时绘制温度数据,温度在Y轴,时间在X轴。 项目优势 高效的数据监控: 实时监控和绘制温度数据,提高数据监控的效率。 用户友好: 界面简洁,操作简单,用户可以轻松使用该应用程序。 提高编程技能: 通过实践项目,提高对Arduino和Python的应用能力。 项目技术细节 项目详情: 项目名:使用 Arduino 和 Python 实时数据绘图的温度监控系统 项目平台:Arduino 和 Python 使用的编程语言:C++(Arduino)、Python ID
本测试计划提供给深圳移动公司PMS核心小组成员,对PMS EXPRESS 系统进行功能测试。测试计划主要通过对基站项目管理过程的模拟,从项目的立项开始直至基站的验收交付以及知识沉淀,对基站建设全过程中涉及的管理内容进行模拟测 试。测试计划中设计了两个基站项目一明宁花园、椰风海岸。其中明宁花园按 原计划如期完工,而椰风海岸因为设备没能如期到货导致了个整个项目工期的延误。
博物馆智能化系统的解决方案.pptx
基于STM32的电子罗盘试验
【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。 (GUI interface design, four rotor aircraft simulation. The VR interface design. ) 【matlab GUI仿真】说明:GUI界面设计,四旋翼飞机仿真。VR界面设计。
项目简介: 本项目实现了一个基于VHDL(VHSIC硬件描述语言)的倒车雷达系统。倒车雷达用于检测车辆后方障碍物的距离,以辅助驾驶员安全倒车。系统通过超声波传感器检测距离,并使用LED显示或蜂鸣器提示障碍物的接近程度。 项目模块: 传感器接口模块: 处理超声波传感器的信号。 发送触发信号,接收回波信号。 计算回波时间,进而计算距离。 距离计算模块: 根据传感器回波时间计算距离。 处理和转换距离数据,准备用于显示和警报。 警报显示模块: 基于计算出的距离提供视觉和听觉警报。 使用LED显示不同的距离范围。 使用蜂鸣器发出不同频率的警报声。 控制模块: 控制各模块的协调工作。 管理超声波传感器的触发和数据采集周期。
行业报告
毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 毕业设计ssm框架在线课堂微信小程序源码+项目说明(高分毕设).zip 个人经导师指导并认可通过的高分设计项目,评审分98分。主要针对计算机相关专业的正在做毕设的学生和需要项目实战练习的学习者,也可作为课程设计、期末大作业。 项目主要功能: 该项目是一款针对在线课堂微信小程序的数据管理系统,旨在便捷用户对小程序中的信息进行有效管理。系统设计注重功能完善和用户体验,力求使用户能轻松找到所需信息。采用JAVA技术开发,并结合现有成熟源代码模板,确保了平台的可操作性和实用性。关键词:在线课堂微信小程序;JAVA。
国内锂矿加速开发,四川锂矿详细梳理
一个基于react框架的资源文件 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 练习,xiaoyoushop分支是小优后台,screen分支是大屏项目,react分支是基于react框架,使用ts语言,vite构建的一个后台管理系统项目 内容来源于网络分享。仅供学习使用。请勿商用。如有侵权,请联系我。我将立即删除
MQD企业大学建设思路与年度工作重点.pptx
Java语言基础入门教程 Java实训教程 13.反射 共38页.pptx
网上购物商城数据库设计报告.docx
单机成本核算统计表.docx
Swift 是由苹果公司推出的一种现代化的编程语言,用于开发 iOS、macOS、watchOS 和 tvOS 应用程序。它结合了安全、高性能和易用性的特点,成为开发苹果平台应用程序的首选语言。