Я тестирую 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?
Спасибо за ваш ответ. Многопроцессорность сделала трюк. – Setoh