下面是同事在Kyotocabinet数据库调研时候出的报告,非常好
Kyotocabinet数据库性能简单测试
机器配置:16G内存
a.数据库文件存储位置:NFS
写性能:
总记录数 | 数据库文件体积 | 写入成功数 | 写入失败数 | 耗时(豪秒) | 平均每秒写入数 | DB要求内存大小 |
8264272 | 734051632(734M) | 8264272 | 0 | 44612 | 187824 | 1G |
8264272 | 734051632 | 8264272 | 0 | 49108 | 168658 | 1G |
8264272 | 734051632 | 8264272 | 0 | 51920 | 162044 | 1.5G |
8264272 | 734051632 | 8264272 | 0 | 48922 | 172172 | 1.5G |
8264272 | 734051632 | 8264272 | 0 | 58437 | 142487 | 2G |
8264272 | 734051632 | 8264272 | 0 | 44818 | 187824 | 2G |
18015570 | 1351514576(1.3G) | 18015570 | 0 | 99932 | 181975 | 2G |
18015570 | 1351514576(1.3G) | 18015570 | 0 | 96606 | 187662 | 2G |
18015570 | 1351514576 | 18015570 | 0 | 92966 | 195821 | 3G |
18015570 | 1351514576 | 18015570 | 0 | 94012 | 191655 | 3G |
读性能:
总记录数 | 数据库文件体积 | 命中数 | 未命中数 | 耗时(豪秒) | 平均每秒读取数 | DB要求内存大小 |
8264272 | 734051632(734M) | 8264272 | 0 | 55211 | 150259 | 1G |
8264272 | 734051632 | 8264272 | 0 | 52154 | 158928 | 1G |
8264272 | 734051632 | 8264272 | 0 | 51565 | 162044 | 1.5G |
8264272 | 734051632 | 8264272 | 0 | 50403 | 165285 | 1.5G |
8264272 | 734051632 | 8264272 | 0 | 52776 | 158928 | 2G |
8264272 | 734051632 | 8264272 | 0 | 55711 | 150259 | 2G |
18015570 | 1351514576 | 18015570 | 0 | 123678 | 146468 | 2G |
18015570 | 1351514576 | 18015570 | 0 | 121998 | 148889 | 2G |
18015570 | 1351514576 | 18015570 | 0 | 120263 | 150129 | 3G |
18015570 | 1351514576 | 241564 | 17774006 | 131038 | 137523 | 3G |
33706245 | 2510662544(2.5G) | 16978669 | 0 | 6154711 | 5477 | 200M |
b.数据库文件存储位置:LOCAL
写性能:
总记录数 | 数据库文件体积 | 写入成功数 | 写入失败数 | 耗时(豪秒) | 平均每秒写入数 | DB要求内存大小 |
18015574 | 1215446928(1.2G) | 18015574 | 0 | 79537 | 228045 | 3G |
18015574 | 1215446928 | 18015574 | 0 | 79537 | 228045 | 3G |
18015606 | 1215449104(1.2G) | 18015606 | 0 | 77128 | 233968 | 3G |
16978669 | 1146728896 | 16978669 | 0 | 73048 | 232584 | 3G |
33706245 | 2510662544(2.5G) | 33706245 | 0 | 208210 | 162049 | 3G |
读性能:
总记录数 | 数据库文件体积 | 命中数 | 未命中数 | 耗时(豪秒) | 平均每秒读取数 | DB要求内存大小 |
33706245 | 2510662544(2.5G) | 16978669 | 0 | 333752 | 101219 | 200M |
16978669 | 1146728896(1.1G) | 16978669 | 0 | 206954 | 82420 | 200M |
18015574 | 1215446928 | 8264274 | 9751328 | 142549 | 126870 | 600M |
18015574 | 1215446928 | 8264274 | 9751328 | 105576 | 171576 | 1G |
18015574 | 1215446928(1.2G) | 8264274 | 9751314 | 87114 | 207075 | 3G |
c.结论:
1、 本地存储的写速度比NFS存储的写速度稍好,但都比较快,分别在每秒20万和每秒15万的级别上。
2、 写数据时,与文件大小无关,无论本地存储还是NFS存储,必须是内存体积大于数据文件的大小,否则性能急剧下降,并且变的不可接受。
3、 本地存储,读数据时,内存可以小于数据文件大小,读取速度与数据文件大小无关,而是与内存大小相关,当内存为200M时,每秒10万次读取次数,当将内存扩大了3G时,每秒20万次读取次数,也就是说,可以使用比较小的内存,读取比较大的数据量。
4、 NFS存储,读数据时,内存必须大于数据集文件体积,读取速度在每秒15万次。
| 读:内存>数据文件 | 写:内存>数据文件 | 读:内存<数据文件(数据文件=2.5G) | 写:内存<数据文件 | 是否支持多进程写 |
Local | 每秒20万次 | 每秒20万次 | 200M内存=每秒10万次,600M内存=每秒12万次 | 不可接受 | 否 |
NFS | 每秒15 | 万次每秒18万次 | 不可接受 | 不可接受 | 否 |
所以,最好的选择时,文件存放在Local存储中,较大内存写入数据后,以较小内存去读取。