ВСем доброго времени. На одном сервере стояла жесткая проблема с MySQL. Вот оптимизировал его хорошо. ВСе отлично стало. Но после того, как сервер поработает 2 дня, и мускуль сожрет 1.5 гигов памяти из 4, больше не может, то начинаются тормоза, а точнее slow-queries лезть, активность к диску дикая появляется. Вы сами по графикам сейчас видите как она спала, когда ребутнул mysql. Ниже прилагаю графики:
Подозреваю что ему не хватает ядренного кеша ФС. Вот мой конфиг:
mysql> show variables like "key_buffer%";
+-----------------+-----------+
| Variable_name | Value |
+-----------------+-----------+
| key_buffer_size | 499998720 |
+-----------------+-----------+
1 row in set (0.00 sec)
Была похожая проблема, для уменьшение нагрузки на винт изменил тип таблиц в innodb, нагрузка значительно снизилась. Но нужно учитывать, что при крахе большая вероятность потери данных.
Проще взять my-large.cnf ( В Debian лежит в /usr/share/doc/mysql-server-5.0/examples ) и танцевать от него, поглядывая на SHOW STATUS, чем этот конфиг допиливать. Вписать цифры побольше может любой дурак, только к оптимизации это относится слабо.
еще для корректного конфига временных таблиц (это для версии mysql 5.0... хз как там в 5.1+) надо указать max_heap_table_size равный tmp_table_size. т.е.
max_heap_table_size определяет максимальный размер таблицы в памяти (если временная таблица больше, она сбрасывается на диск). Не всегда стоит выкручивать этот параметр на максимум, тем более при таких диких значениях tmp_table_size.
Была похожая проблема, для уменьшение нагрузки на винт изменил тип таблиц в innodb, нагрузка значительно снизилась. Но нужно учитывать, что при крахе большая вероятность потери данных.
В такие моменты очень жаль, что нецензурная лексика на этом замечательном форуме находится под запретом. RTFM.
UPD Имеется ввиду, что MyISAM при прочих равных быстрее InnoDB, ибо значительно проще устроен. При криво настроенном сервере возможно обратное утверждение, но это не повод советовать переводить все базы на InnoDB.
В такие моменты очень жаль, что нецензурная лексика на этом замечательном форуме находится под запретом. RTFM.
UPD Имеется ввиду, что MyISAM при прочих равных быстрее InnoDB, ибо значительно проще устроен. При криво настроенном сервере возможно обратное утверждение, но это не повод советовать переводить все базы на InnoDB.
Если возрастает количество запросов, которые при "нормальном режиме" выполняются быстро, то при использовании MyISAM происходит блокирование таблиц, что приводит к возрастанию нагрузки на сервер (особенно на диск). При использовании InnoDB таких проблем не возникает -- "Формат данных InnoDB обеспечивает надежное хранение данных за счет транзакционности и блокирование данных на уровне СТРОКИ." Innodb намного быстрее работает если постоянно происходит запись и чтение в таблицу.