Я использую MySQL (MyISA). Таблица с более чем 8 миллионами строк. Первичный индекс по 'id'.
Мое приложение покажет:
first run: 55 req/sec,
second run: ~120 req/sec,
third run: ~1200 req/sec,
fourth run: ~4500 req/sec,
fifth run: ~9999 req/sec
После перезапуска mysql-сервера снова то же самое.
Как поместить ВСЕ индексы сразу в память после запуска сервера базы данных?
В my.cnf
key_buffer_size=2000M
Пример кода:
now = datetime.datetime.now()
cursor = connection.cursor()
for x in xrange(1, 10000):
id = random.randint(10, 100000) # random first 10000 records for cache
cursor.execute("""SELECT num, manufacturer_id
FROM product WHERE id=%s LIMIT 1""", [id])
cursor.fetchone()
td = datetime.datetime.now() - now
sec = td.seconds + td.days * 24 * 3600
print "%.2f operation/sec" % (float(x) / float(sec))