Всем привет. Имеется скрипт, который каждые 2 минуты делает выборку в довольно большую БД (20млн строк). На данный момент MySQL с такой задачей не справляется (иногда просто ложится из за параллельно висящих соединений, т.к. запрос осуществляется очень долго - бывает до 84 сек.). Собственно, вопрос в том, какую БД можно использовать в моём случае, если требуется выборка по 2-м параметрам (точнее полям из БД, например: category_id и type_id) и выбирать требуется до 5 тысяч записей из этой таблицы. С другими БД не работал, желательно, чтобы язык запросов был максимально схож. Заранее благодарю за ответ.
В этой ситуации вы имеете большой объем данных, с которым не справляется в приемлемый срок ваше железо. Кроме железа, большое значение имеет движок таблиц (используйте MyISAM вместо InnoDB) и наличие индексов на полях, по которым происходит селект (индексы должны быть). Система управления базой в контексте селекта не так важна.
+1 в конечном счете, критичный параметр — хватает ли оперативы. потому что выгрузка временных данных на диск приводит к тормозам. и наоборот, даже "кривой" запрос будет нормально кеширован, если оперативки в избытке. вывод: - оптимизировать запросы; - добавлять оперативки. Добавлено спустя 4 минуты 42 секунды: вот насчет выбора MyISAM/InnoDB не всё очевидно. надо посмотреть как часто блокируются нужные таблицы. блокировки в этих движках работают по разному. во избежание блокировок надо стараться разделять "статистические" таблицы и оперативные. пополнять статистику по расписанию.
еще стоит наверное дефолтные настроечки поменять на ченить по-круче, а то он так и будет кушать 300 метров и не жаловаться. может и менять ничего не понадобится