私は数ヶ月前にmongodbを発見しました。このpostを読んだ後、私はmongodbがmysqlよりも本当に速いと思ったので、私は自分のベンチを作ることにしました。問題は私が上記投稿者と同じ結果を持っていない、 mongodbはMyISAMテーブルよりも遅いようです。MongoDBはMySQLより速くはありませんか?
from datetime import datetime
import random
import MySQLdb
import pymongo
mysql_db=MySQLdb.connect(user="me",passwd="mypasswd",db="test_kv")
c=mysql_db.cursor()
connection = pymongo.Connection()
mongo_db = connection.test
kvtab = mongo_db.kvtab
nb=1000000
thelist=[]
for i in xrange(nb):
thelist.append((str(random.random()),str(random.random())))
t1=datetime.now()
for k,v in thelist:
c.execute("INSERT INTO key_val_tab (k,v) VALUES ('" + k + "','" + v + "')")
dt=datetime.now() - t1
print 'MySQL insert elapse :',dt
t1=datetime.now()
for i in xrange(nb):
c.execute("select * FROM key_val_tab WHERE k='" + random.choice(thelist)[0] + "'")
result=c.fetchone()
dt=datetime.now() - t1
print 'MySQL select elapse :',dt
t1=datetime.now()
for k,v in thelist:
kvtab.insert({"key":k,"value":v})
dt=datetime.now() - t1
print 'Mongodb insert elapse :',dt
kvtab.ensure_index('key')
t1=datetime.now()
for i in xrange(nb):
result=kvtab.find_one({"key":random.choice(thelist)[0]})
dt=datetime.now() - t1
print 'Mongodb select elapse :',dt
注:
- MySQLとMongoDBの両方がlocahost上にある、あなたが私のPythonコードに見てもらえ、その中に何か問題があるかもしれません。
- MySQLとMongoDBの両方が 'キー' 列には、
MySQLの表を索引付けた:
CREATE TABLE IF NOT EXISTS `key_val_tab` (
`k` varchar(24) NOT NULL,
`v` varchar(24) NOT NULL,
KEY `kindex` (`k`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
バージョンは、次のとおり
- のMySQL:5.1.41
- のMongoDB:1.8 .3
- python:2.6.5
- pymongo:2.0.1
- のLinux:デスクトップコアI7(100万挿入/選択のため)2.93 GHzの
結果:
MySQL insert elapse : 0:02:52.143803
MySQL select elapse : 0:04:43.675914
Mongodb insert elapse : 0:00:49.038416 -> mongodb much faster for insert
Mongodb select elapse : 0:05:10.409025 -> ...but slower for quering (thought was the opposite)
PAE
MongoDBは、64ビットアーキテクチャが好きです。私は、ベンチマークの対象となるシステムの1つに熟練していない人が、ベンチマークを実行しても、多くの株式を置くことはしません。 – ceejayoz
だから私はいくつかの助けを頼んだ! – Eric
@ceejayozあなたがそれを速くするために非常に経験する必要があるなら、それはほとんどのユーザーのために遅くなります。私は経験の浅いユーザーによって作成されたベンチマークが有用であるかもしれないと言っています... –