我使用mongo和sys-ng来保存我的日志
日志大约在20000行之前
我用mongos运行mongo whit 2 shard
和3 host
我在ipython
In [48]: %time dddd=[qlogdb.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'}) for i in range(100000)]
CPU times: user 7.24 s, sys: 2.51 s, total: 9.75 s
Wall time: 10.77 s
我认为它可以从输出日志
写入10000行前置秒我需要在将数据插入mongo
我想在将数据插入mongo
但我不确定它是否可以提高写入速度;
任何方式?
答案 0 :(得分:2)
您需要100,000次写入/秒,并且您对读取数据没有任何要求,即
话虽如此,我有两条建议:
通过使用RAID来缓解I / O瓶颈,例如RAID 0.这假设您的负载是I / O绑定的;但是,由于创建所有词典所需的工作,您的基准测试也会略微占用CPU。
使用批量插入:
In [1]: %time return_value = [collection.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'}) for i in xrange(100000)]
CPU times: user 7.00 s, sys: 0.85 s, total: 7.85 s
Wall time: 7.86 s
In [2]: %time return_value = [collection.insert({'tet':1313232,'test':1232423,'asdasds':'sdadsds'}) for i in xrange(100000)]
CPU times: user 6.79 s, sys: 0.84 s, total: 7.63 s
Wall time: 7.64 s
In [3]: documents = [{'tet':1313232,'test':1232423,'asdasds':'sdadsds'} for i in xrange(100000)]
In [10]: %time return_value = collection.insert(documents)
CPU times: user 0.97 s, sys: 0.03 s, total: 0.99 s
Wall time: 1.00 s
In [4]: documents = [{'tet':1313232,'test':1232423,'asdasds':'sdadsds'} for i in xrange(100000)]
In [10]: %time return_value = collection.insert(documents)
CPU times: user 0.92 s, sys: 0.04 s, total: 0.96 s
Wall time: 0.98 s
请注意,我已将range
来电替换为xrange
。
当然,如果您还有阅读要求,那么您需要查阅有关safe
和w
参数的pymongo collection.insert文档。没有免费的午餐等。
希望这有帮助!