测试环境:
网络:内部的局域网
服务器:4核,2.7GHZ,4g,1t
客户端:i3,4g
样本数据:
key:数字
value:2.66k xml数据
测试1
从客户端插入1百万条数据到服务器端数据库mongodb
用时9分7秒
数据库大小:3.95GB
测试2
从客户端插入1千万条数据到服务器端数据库mongodb
用时1小时55分16秒
数据库大小:29.9GB
服务器资源:
内存占用:3.8G,虚拟内存60G
cpu:10%左右
客户端:cpu 15%左右.
测试3
(压缩字符串)从客户端插入1百万条数据到服务器端数据库mongodb
用时:4分51秒 不压缩的是9分7秒
数据库大小:1.95GB 不压缩的是3.95GB
测试4
测试样本:2.9m的excel文件
用小文件模式(存在document中)插入673条=1.95GB
用时,4分30秒
测试5
测试样本:2.9m的excel文件
用大文件模式插入673条=1.95GB
用时30分43秒
结论:
可以看出1百万和1千万的时间差距很大,原因就是由于1千万的插入过程中,物理内存耗尽,开始使用虚拟内存,故效率大大降低。
mongoDB占用内存和虚拟内存、网络带宽很多,服务器和客户端cpu占用较少,服务器升级应注重内存和硬盘。计通比较低。可以用压缩数据的方式提高计通比,从而提高程序的效率。
mongoDB储存文件的限制是文件大小要小于4m。对于大于4m的文件,则必须用GridFS方式储存,参见
http://www.cnblogs.com/lipan/archive/2011/03/21/1989409.html#viewSource
所以插入大于4m的文件会慢的多,可以考虑从客户端限制excel文件的大小(例如要求用户将一个workbook分成几个单独的sheet).