Разница в производительности между Innodb и Myisam в Mysql

У меня есть таблица mysql с более чем 30 миллионами записей, которые изначально хранились с помощью myisam. Вот описание таблицы:

describe_table

Я бы выполнил следующий запрос к этой таблице, который обычно занимает около 30 секунд.Я бы каждый раз менял @eid, чтобы избежать кэширования базы данных или диска.

select count(fact_data.id) 
    from fact_data 
    where fact_data.entity_id=@eid 
        and fact_data.metric_id=1

Затем я преобразовал эту таблицу в innoDB без внесения каких-либо других изменений, и после этого один и тот же запрос теперь возвращается менее чем за секунду каждый раз, когда я запускаю запрос. Даже когда я случайным образом устанавливаю @eid, чтобы избежать кэширования, запрос возвращается менее чем за секунду.

Я изучал различия между двумя типами хранилищ, пытаясь объяснить резкое улучшение производительности, но ничего не нашел. На самом деле многое из того, что я читал, указывает на то, что Myisam должен работать быстрее.

Запросы, которые я выполняю, относятся к локальной базе данных, и никакие другие процессы не обращаются к базе данных во время тестов.

9
задан Melon 27 January 2014 в 11:37
поделиться