2017-02-11 79 views
0

我使用python连接器pymongo和pymysql测试MongoDb和MySQL,尤其是插入函数。 pymongo版本是3.4,pymysql是0.7.9,蟒蛇是3.5pymongo插入vs pymysql插入

我的代码看起来像蒙戈:

client = MongoClient('localhost', 27017) 
    db = client['local'] 
    collection = db['cqt']    

    for i in range (0,10): 
     datas = [ {'a' : 1, 'b':2" }, {'a' : 3, 'b':4" }, ...] # 2000 dicts 
     data = [ bson.son.SON(d) for d in datas] 
     deltaT = time.clock() 
     collection.insert_many(data) 
     deltaT = time.clock() - deltaT 

而对于MySQL的:

connection = pymysql.connect(host='127.0.0.1', 
        user='admin', 
        password='toto', 
        db='cqt', 
        charset='utf8mb4', 
        cursorclass=pymysql.cursors.DictCursor) 

    cursor = connection.cursor() 
    sqlRequest = """INSERT INTO `cqt`.`myTable` (`a`,`b`) VALUES """ 


    for data in datas : sql += data.getSQL() + "," # 2000 rows 
    deltaT = time.clock() 
    cursor.execute(sql) 
    deltaT = time.clock() - deltaT 

的数据是简单dictionnaries,6列用一个字符串键和一个int值。

当一个因素绘制的DeltaT变量(在规定的时间中插入2000个条目),我很惊讶地发现,蒙戈是比MySQL慢得多,10 insert duration results

我不想在这里做一个基准测试,但只是估计我需要的用例中的数据库性能。然而,从Java中进行的其他测试或在MySQL和MongoDB之间查看网络基准测试中,我用python得到的结果并不是我所期望的。对于使用MySQL和Mongo插入,我应该有非常相似的性能,并且对Mongo来说性能更好。

那么,pymongo连接器是否很慢? 你知道我是否应该在代码或MongoDB中修改一些参数来改善性能? 任何建议有更好的MongoDB性能?

回答

0

其实,我认为你需要通过使用像MongoDB Management服务这样的工具来收集一些统计数据,然后确定哪些是你的瓶颈。

这里是我的建议:

  • 尝试使用multiprocessing和执行并行Python脚本插入document.You会有更好的表现,绝对。

    看看这个example

  • 为了最大化写入性能,分片是一个好方法。

  • 检查出你的磁盘I/O速度,也许你可以试试SSD。

见从write Operation performance更多细节。

希望这会有所帮助。

+0

感谢您的回答。多处理技巧就是这样做的。 – Setoh