概述
Introduction
Memlink用于存储Key=>List数据,下面对比了不同数据存储引擎存储存储Key=>List数据的性能和内存开销。压力测试分为:客户端有长连接和短链接、N个并发数执行M个查询、在不同数据规模下等多种组合测试。
Details
硬件
OS:CentOS release 4.6 (Final) 内核:2.6.9-67.0.22.ELsmp 32位
内存: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客户端,另一组使用redis自带的redis-benchmark。用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
下面的测试结果中,红色为memlink,绿色为redis,蓝色为mysql。
内存消耗测试
初始内存 | 1w | 10w | 100w | 1000w | |
memlink | 4764K | 5032K | 6628K | 18M | 139M |
redis | 1060K | 1920K | 9044K | 78M | 771M |
访问性能测试
1. 一个客户端,长连接
![]() | 1w | 10w | 100w | 1000w | |
insert | memlink | c:16296 py:12558 php:12153 | c:14125 py:12565 php:12144 | c:13868 py: 13096 php: 12521 | c:13187 py:12611 php:12124 |
hiredis | 15183 | 14997 | 14828 | 14788 | |
redis | 15673 | 15743 | 15594 | 15304 | |
mysql | 10891 | 10297 | 10022 | 9718 | |
range first100 | memlink | c:10874 py:8275 php:9185 | c:11429 py:8273 php:9171 | c:10994 py:8068 php:9136 | c:11663 py:8256 php:10071 |
hiredis | 1328 | 1329 | 1324 | 1332 | |
redis | 4237 | 4587 | 4310 | 4347 | |
mysql | 1550 | 1563 | 1559 | 1307 | |
range first200 | memlink | c:8045 py:6015 php:6544 | c:8041 py:6017 php:6545 | c:7863 py:5941 php:6542 | c:7970 py:6024 php:7010 |
hiredis | 708 | 709 | 705 | 709 | |
redis | 2631 | 2777 | 2666 | 2631 | |
mysql | 956 | 954 | 956 | 941 | |
range first1000 | memlink | c:1362 py:1446 php:1466 | c:1362 py:1448 php:1468 | c:1354 py:1440 php:1462 | c:1362 py:1444 php:1492 |
hiredis | 147 | 148 | 148 | 147 | |
redis | 646 | 666 | 652 | 636 | |
mysql | 230 | 230 | 230 | 235 | |
range last100 | memlink | c:11153 py:8137 php:8996 | c:10318 py:7526 php:8263 | c:5519 py:4410 php:4691 | c:112 py:97 php:97 |
hiredis | 1221 | 212 | 19 | 2 | |
redis | 3289 | 197 | 19 | 1.97 | |
mysql | 31 | 3 | 0.3 | 0.04 | |
range last200 | memlink | c:7938 py:5956 php:6461 | c:7515 py:5629 php:6078 | c:4615 py:3688 php:3899 | c:111 py:96 php:97 |
hiredis | 675 | 184 | 19 | 2 | |
redis | 2237 | 188 | 19 | 1.97 | |
mysql | 31 | 3 | 0.3 | 0.04 | |
range last1000 | memlink | c:1358 py:1442 php:1458 | c:1345 py:1421 php:1440 | c:1209 py:1251 php:1272 | c:103 py:91 php:91 |
hiredis | 147 | 92 | 17 | 2 | |
redis | 615 | 143 | 19 | 1.97 | |
mysql | 30 | 3 | 0.3 | 0.03 |
2. 一个客户端, 全部是短连接。一次请求一个连接。
![]() | 1w | 10w | 100w | 1000w | |
insert | memlink | c:6560 py:6138 php:6064 | c:6466 py:5990 php:5986 | c:6675 py:6092 php:6010 | c:6719 py:6012 php:6003 |
hiredis | 10891 | 10297 | 10233 | 10135 | |
redis | 6134 | 5855 | 6072 | 5995 | |
mysql | 3313 | 3251 | 3108 | 3001 | |
range first100 | memlink | c:5467 py:4535 php:5064 | c:5472 py:4450 php:4944 | c:5662 py:4495 php:4712 | c:5484 py:4475 php:4779 |
hiredis | 1058 | 1172 | 1166 | 1163 | |
redis | 3058 | 3058 | 3125 | 3333 | |
mysql | 923 | 1158 | 1031 | 885 | |
range first200 | memlink | c:4533 py:3746 php:4124 | c:4563 py:3693 php:4049 | c:4709 py:3724 php:3893 | c:4567 py:3708 php:3931 |
hiredis | 654 | 651 | 669 | 667 | |
redis | 2150 | 2159 | 2222 | 2272 | |
mysql | 815 | 823 | 783 | 743 | |
range first1000 | memlink | c:1206 py:1254 php:1291 | c:1200 py:1249 php:1285 | c:1215 py:1253 php:1263 | c:1202 py:1250 php:1266 |
hiredis | 146 | 145 | 145 | 144 | |
redis | 626 | 627 | 636 | 641 | |
mysql | 227 | 230 | 226 | 212 | |
range last100 | memlink | c:5468 py:4451 php:4970 | c:5229 py:4233 php:4692 | c:3763 py:3055 php:3155 | c:110 py:96 php:96 |
hiredis | 994 | 271 | 32 | 3 | |
redis | 2531 | 189 | 19 | 1.97 | |
mysql | 20 | 3 | 0.21 | 0.02 | |
range last200 | memlink | c:4558 py:3692 php:4053 | c:4355 py:3545 php:3886 | c:3323 py:2680 php:2790 | c:110 py:95 php:96 |
hiredis | 630 | 233 | 32 | 3 | |
redis | 1879 | 182 | 19 | 1.97 | |
mysql | 30 | 3 | 0.3 | 0.04 | |
range last1000 | memlink | c:1198 py:1247 php:1284 | c:1191 py:1226 php:1267 | c:1096 py:1093 php:1125 | c:102 py:91 php:91 |
hiredis | 144 | 104 | 27 | 3 | |
redis | 602 | 141 | 19 | 1.96 | |
mysql | 30 | 3 | 0.3 | 0.03 |
3. 10个客户端,并发长连接。
memlink内部开启4个处理线程。仅c客户端测试。
![]() | 1w | 10w | 100w | 1000w | |
insert | memlink | 23021 | 22210 | 22200 | 22242 |
hiredis | 29401 | 30929 | 29109 | 30278 | |
redis | 32571 | 33692 | 33665 | 32945 | |
mysql | 13704 | 12786 | 12087 | 11023 | |
range first100 | memlink | 45451 | 53463 | 55645 | 48283 |
hiredis | 1443 | 1384 | 1396 | 1339 | |
redis | 7042 | 7142 | 7092 | 6666 | |
mysql | 2011 | 2059 | 2015 | 2387 | |
range first200 | memlink | 23768 | 33966 | 35045 | 35417 |
hiredis | 667 | 641 | 636 | 655 | |
redis | 3816 | 3816 | 3846 | 3571 | |
mysql | 1637 | 1768 | 1854 | 1614 | |
range first1000 | memlink | 4269 | 4305 | 4281 | 4271 |
hiredis | 114 | 115 | 114 | 115 | |
redis | 811 | 812 | 815 | 781 | |
mysql | 654 | 641 | 648 | 631 | |
range last100 | memlink | 53719 | 48948 | 24086 | 295 |
hiredis | 1584 | 229 | 19 | 2 | |
redis | 4694 | 197 | 19 | 1.82 | |
mysql | 91 | 8 | 1 | - | |
range last200 | memlink | 35593 | 34264 | 21830 | 292 |
hiredis | 696 | 220 | 19 | 2 | |
redis | 3039 | 188 | 19 | 1.75 | |
mysql | 96 | 9 | 1 | - | |
range last1000 | memlink | 4285 | 4270 | 4336 | 277 |
hiredis | 114 | 142 | 19 | 2 | |
redis | 772 | 149 | 18 | 1.75 | |
mysql | 91 | 8 | 1 | - |
上面的 - 表示时间太长,数百秒也没有结果。
4. 10个客户端,并发短连接
Memlink内部开启4个处理线程。仅c客户端测试。
操作 | 1w | 10w | 100w | 1000w | |
insert | memlink | 9665 | 9650 | 10078 | 10183 |
hiredis | 9381 | 9489 | 8993 | 8976 | |
redis | 9285 | 9290 | 9287 | 8835 | |
mysql | 5623 | 5621 | 5468 | 5306 | |
range first100 | memlink | 17400 | 17504 | 16614 | 17292 |
hiredis | 1695 | 1637 | 1696 | 1586 | |
redis | 4629 | 4587 | 4504 | 4545 | |
mysql | 2210 | 2286 | 1955 | 1611 | |
range first200 | memlink | 15786 | 15772 | 15964 | 16180 |
hiredis | 711 | 711 | 719 | 692 | |
redis | 2941 | 2949 | 2941 | 2857 | |
mysql | 1444 | 1791 | 1870 | 1402 | |
range first1000 | memlink | 3795 | 3918 | 3703 | 3250 |
hiredis | 118 | 115 | 116 | 114 | |
redis | 761 | 739 | 761 | 735 | |
mysql | 550 | 692 | 620 | 686 | |
range last100 | memlink | 16989 | 16502 | 13118 | 319 |
hiredis | 2132 | 240 | 20 | 2 | |
redis | 4385 | 191 | 19 | 2 | |
mysql | 80 | 8 | 1 | - | |
range last200 | memlink | 15915 | 15596 | 12203 | 316 |
hiredis | 743 | 229 | 20 | 2 | |
redis | 2941 | 182 | 19 | 2 | |
mysql | 94 | 9 | 1 | - | |
range last1000 | memlink | 3893 | 3641 | 3332 | 299 |
hiredis | 120 | 174 | 19 | 2 | |
redis | 756 | 149 | 18 | 2 | |
mysql | 94 | 9 | 1 | - |
https://www.oschina.net/question/12_18406
最后
以上就是标致麦片为你收集整理的mysql 性能测试 参照 Introduction Details的全部内容,希望文章能够帮你解决mysql 性能测试 参照 Introduction Details所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复