Ich teste MongoDb und MySQL mit ihren Python-Konnektor pymongo und pymysql, vor allem die Insert-Funktion. pymongo Version ist 3.4, pymysql ist 0.7.9, Python ist 3,5pymongo einfügen vs pymysql einfügen
Mein Code wie für Mongo aussieht:
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
Und für 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
Daten sind einfache Wörterbücher, 6 Spalten mit einem String-Schlüssel und einem int-Wert.
Wenn die deltaT Variable Plotten (die erforderliche Zeit 2000 Einträge eingefügt werden), ich bin überrascht, dass Mongo ist viel langsamer als mysql zu finden, um den Faktor 10. insert duration results
Ich will nicht Führen Sie hier einen Benchmark durch, aber nur um eine Schätzung der Datenbankleistung in dem Anwendungsfall zu erhalten, den ich benötige. Aus anderen Tests, die in Java gemacht wurden, oder wenn man sich den Benchmark zwischen MySQL und MongoDB ansieht, sind meine Ergebnisse mit Python jedoch nicht das, was ich überhaupt erwartet habe. Ich sollte ziemlich ähnliche Leistungen für das Einfügen mit MySQL und Mongo und noch bessere Leistung für Mongo haben.
Also, ist der Pymongo-Anschluss langsam? Wissen Sie, ob es einige Parameter gibt, die ich in meinem Code oder in MongoDB ändern sollte, um die Perf zu verbessern? Irgendwelche Vorschläge, um bessere Leistung mit MongoDB zu haben?
Danke für Ihre Antwort. Multiprozessing hat den Trick gemacht. – Setoh