Код: Выделить всё
SELECT dt, lat, lon FROM z_datareg_1438 where dt>'27.09.2013 10:20:30' ORDER BY dt rows 1 to 1
Код: Выделить всё
# -*- coding: utf-8 -*-
import MySQLdb
import time
import math
import sys
from pymongo import Connection
db = Connection()
mongo_test = db.test_db.test_collection
mongo_test.remove()
mysql_cursor = MySQLdb.connect(host="localhost", user='root', passwd='', db='sqhash', charset='utf8',use_unicode = True).cursor()
mysql_cursor.execute('DROP TABLE IF EXISTS test')
mysql_cursor.execute('CREATE TABLE test (id VARCHAR(250) PRIMARY KEY, value LONGTEXT)')
mysql_cursor.execute('DROP TABLE IF EXISTS test_inno')
mysql_cursor.execute('CREATE TABLE test_inno (id VARCHAR(250) PRIMARY KEY, value LONGTEXT) ENGINE=InnoDb')
sys.stdout = open('mongo_vs_mysql.html', 'w')
print "<style>td { font: 12px Verdana; }</style>"
print "<table>"
def report(txt):
per_sec = (float(cnt) / (time.clock()-start_time)) / 1000
color = 'red' if 'mongo' in txt.lower() else 'blue'
color = 'green' if 'inno' in txt.lower() else color
print "<tr><td>%35s<td>%5.1fK per sec<td><div style='background:%s; width:%dpx;'> </div>" % (txt, per_sec, color, int(math.log(per_sec)/math.log(1.02)))
for cnt in (100, 1000, 10000):
mongo_test.remove()
mysql_cursor.execute('TRUNCATE test')
mysql_cursor.execute('TRUNCATE test_inno')
print '<tr><td><br><br><b>', cnt, 'items</b>'
# MYISAM INSERT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mysql_cursor.execute('INSERT INTO test VALUES(%s,%s)', (i1,i1))
#mysql_test[i1] = i1
report('MyISAM INSERTs')
# INNODB INSERT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mysql_cursor.execute('INSERT INTO test_inno VALUES(%s,%s)', (i1,i1))
#mysql_test[i1] = i1
report('INNODB INSERTs')
# MONGO INSERT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mongo_test.insert({'_id': i1, 'value': i1})
report('Mongo INSERTs')
print
# MYISAM SELECT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mysql_cursor.execute('SELECT value FROM test WHERE id=%s', (i1))
obj = mysql_cursor.fetchall()[0][0]
assert(obj == i1)
report('MyISAM SELECTs')
# INNO SELECT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mysql_cursor.execute('SELECT value FROM test_inno WHERE id=%s', (i1))
obj = mysql_cursor.fetchall()[0][0]
assert(obj == i1)
report('InnoDB SELECTs')
# MONGO SELECT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
obj = mongo_test.find({'_id': i1})[0]['value']
assert(obj == i1)
report('Mongo SELECTs')
# MONGO FALSE SELECT
start_time = time.clock()
for i in xrange(cnt):
i1 = str(i+1)
mongo_test.find({'_id': i1})
assert(1)
report('Mongo cursor(WRONG!) SELECTs')
print
Код: Выделить всё
sudo apt-get install php5-dev php5-cli php-pear
sudo pecl install mongo
Вернуться в «Программирование (под Desktop и Android)»
Сейчас этот раздел просматривают: 1 гость