Снала немного вводной информации.
Есть сайт с достаточно небольшой посещаемостью (1,5К уников в сутки), который хостится на VPS с 512 RAM + 1Ghz cpu. Есть база данных mysql с MyISAM таблицами. В среднем, в таблицах, учавствующих в запросах, около нескольких сотен тысяч записей, за исключением одной — там их почти миллион.
На полях таблиц, учавствующих в объединениях добавлены индексы типа BTREE + уникальные primary ключи.
Ведется mysql_slow log, в который записываются медленные запросы. Недавно заглянув в него, я с ужасом обнаружил, что достаточно простые запросы (без сортировки, группировки, поиска, лимитов, подзапросов) выполняются ОЧЕНЬ долго. Вот, к примеру такой запрос выполнялся почти 8 секунд:
SELECT `mp3_id3`.`artist`, `mp3_id3`.`album`, `mp3_id3`.`year`, `mp3_id3`.`title`, `mp3_genres`.`name` AS `genre`, `mp3_main`.`size`, `mp3_main`.`duration`<br/>
FROM (`mp3_id3`)<br/>
JOIN `mp3_main` ON (mp3_id3.song_id = mp3_main.song_id)<br/>
JOIN `mp3_genres` ON (mp3_id3.genre = mp3_genres.number)<br/>
WHERE `mp3_id3`.`song_id` = 52596131;
С чем может быть связано такое падение производительности? МБ стоит поменять какие нибудь параметры в конфиге mysql? Есть ли какие нибудь инструменты, которые могут помочь определить причину проблемы?