2017-02-11 7 views
0

Я тестирую MongoDb и MySQL, используя их python-коннектор pymongo и pymysql, особенно функцию вставки. PyMongo версия 3.4, pymysql является 0.7.9, питон 3,5pymongo insert vs pymysql insert

Мой код выглядит для Монго:

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

Я не хочу сделайте здесь бенчмарк, но просто чтобы оценить производительность базы данных в usecase, в которой я нуждаюсь. Однако из других тестов, сделанных в java или смотрящих на бенчмарке в Интернете между MySQL и MongoDB, мои результаты с python - это совсем не то, чего я ожидал. Я должен был иметь очень похожие характеристики для вставки с MySQL и Mongo, а также для лучшей производительности для Mongo.

Итак, разъем пимонго медленный? Знаете ли вы, есть ли какие-то параметры, которые я должен изменить в своем коде или в MongoDB, чтобы улучшить perf? Любое предложение улучшить работу с MongoDB?

ответ

0

На самом деле, я думаю, вам нужно собрать статистические данные с помощью инструмента, такого как служба управления MongoDB, а затем убедиться, что это ваше узкое место.

И вот мой совет:

  • Попробуйте использовать multiprocessing и выполнить параллельный сценарий Python для вставки document.You будет иметь более высокую производительность, абсолютно.

    Посмотрите на это example.

  • Чтобы максимально повысить производительность записи, ошпаривание является хорошим способом.

  • Проверьте скорость ввода-вывода вашего диска, возможно, вы можете попробовать SSD.

Подробнее ... write Operation performance.

Надеюсь, это поможет.

+0

Спасибо за ваш ответ. Многопроцессорность сделала трюк. – Setoh

Смежные вопросы