私は、Pythonコネクターpymongoとpymysql、特に挿入機能を使ってMongoDbとMySQLをテストしています。シンプルdictionnaries、6列pymongo insert vs pymysql insert
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
データは以下のとおりです。
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のために:pymongoのバージョンは3.4で、pymysqlは0.7.9で、Pythonは私のコードは、モンゴのためのように見え3.5
です文字列キーとint値を使用します。
デルタT変数(2000のエントリを挿入するために必要な時間)をプロットすると、私はそのモンゴを見つけるために驚いたが、要因10 insert duration results
により、MySQLのよりもはるかに遅いです私はしたくありませんここではベンチマークを行いますが、私が必要とするユースケースではデータベースの性能を評価するだけです。しかし、Javaで作られた他のテストや、MySQLとMongoDBの間のWeb上のベンチマークを見ると、Pythonの私の結果は私がまったく期待していたものではありません。 MySQLとMongoでの挿入にはかなり似たパフォーマンスが必要で、Mongoのパフォーマンスも向上するはずです。
したがって、pymongoコネクタは低速ですか? perfを改善するために私のコードやMongoDBで変更すべきいくつかのパラメータがあるかどうか知っていますか? MongoDBのパフォーマンスが向上するとのアドバイスはありますか?
あなたの答えをありがとう。マルチプロセッシングはトリックでした。 – Setoh