Задавайте вопросы, мы ответим
Вы не зашли.
хочу задать вопрос по производительности mysql.
есть таблица куда парсятся и пишутся логи вебсервера.
сейчас таблица весит около 4гб. на сервере 8 гиг. оперативки.
в ближайшее время трафика будет больше. следовательно за несколько недель таблица может расти на гигабайты. и запросы к ней будут выполнятся гораздо дольше.
как решатся такие вопросы?
больше серверов?больше оперативки?
Неактивен
Обычно логи пишутся один раз, их можно крутить, создавая новые таблички.
В каждый момент времени Вам нужна будет только одна табличка — последняя.
Так что 8 гигабайт вполне достаточно
Больше серверов и больше оперативки — замечательно. Еще можно подумать о
partitioning, тоже может оказаться полезным.
Да, 4Гб сортировать при вставке — не очень приятное занятие, разбивать табличку
стоит в любом случае.
Неактивен
с кручением логов все в порядке.
используя cronolog создаем каждый час новый файл с логами и предыдущий парсим.
но если трафика много, то за месяц накопится несколько гигабайт данных в таблице.
а еще нужно хранить данные за предыдущий месяц для того чтобы посчитать объем трафика.
ладно..предположим сделали partitioning по месяцам - в каждой табличке данные за месяц. если объем такой таблицы будет меньше 8 гиг то все хорошо.
а если больше 8 гигабайт? при условии что нам нужна сумма по столбцу за этот месяц. будет нечто вроде sum(size) from table where date beetween '2009-05-01' and '2009-06-01'.
как оптимизировать в таком случае?
Отредактированно brokoli (21.05.2009 00:42:40)
Неактивен
Ну проедетесь по диску один раз, ничего страшного ведь?
Если это регулярный запрос, то можно сделать табличку рядом с готовыми счетчиками
и добавлять туда +1 при заведении новой строки.
Неактивен