pymongo 插入 vs pymysql 插入

pymongo insert vs pymysql insert

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

我的代码看起来像 mongo :

    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 

数据是简单的字典,6 列,带有一个字符串键和一个 int 值。

绘制 deltaT 变量(插入 2000 个条目所需的时间)时,我惊讶地发现 mongo 比 mysql 慢 10 倍。 insert duration results

我不想在这里做基准测试,只是想估计我需要的用例中的数据库性能。但是,根据在 java 中进行的其他测试或查看 MySQL 和 MongoDB 之间的网络基准测试,我在 python 上的结果根本不是我所期望的。对于 MySQL 和 Mongo 的插入,我应该有非常相似的性能,对于 Mongo.

的性能甚至更好

那么,pymongo 连接器是不是很慢? 您知道我是否应该在我的代码或 MongoDB 中修改一些参数以提高性能吗? 关于 MongoDB 有更好的性能的建议吗?

实际上,我认为您需要使用 MongoDB 管理服务之类的工具来收集一些统计信息,然后确定您的瓶颈所在。

这是我的建议:

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

    看看这个example

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

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

查看来自 write Operation performance 的更多详细信息。

希望对您有所帮助。