Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > MySQL > Хранение статистики


Автор: getme 27.9.2009, 21:28
Добрый вечер и сразу к проблеме!
есть сайт типа tinyurl, есть две таблицы одна "urls" другая "url_clicks"

1ая
url_id|url|short_url

2ая
id|datetime|url_id


в первой мы храним укороченную ссылку, во второй  все проходы через эту ссылку
что собственно и привело к проблеме, сейчас таблица занимает 2GB а ее индекс 4GB
недавно mysql упала изза больших I/O нагрузок в ФС

вопрос такой 
как иметь статистику за последний день, неделю, месяц, год
но при это чтобы БД так не пухла?





Автор: Akina 27.9.2009, 21:47
Цитата(getme @  27.9.2009,  22:28 Найти цитируемый пост)
таблица занимает 2GB а ее индекс 4GB

Какой, собсно, индекс?

Цитата(getme @  27.9.2009,  22:28 Найти цитируемый пост)
как иметь статистику за последний день, неделю, месяц, год

Всё лишнее (старше чем год) сноси в архив.
Или, как вариант, по завершении дня снимай суточный срез и отправляй в архив статистик. Статистику уже бери по таблице срезов.

Автор: getme 28.9.2009, 09:56
индекс стоит на datetime|url_id во второй таблице.
все старше чем год сносится, похоже это картину не меняет
группировать записи по дням тоже думал
еще какие нибудь схемы хранения такой инфы есть?

спасибо

Автор: Akina 28.9.2009, 10:21
Странно, что индекс вдвое больше самОй таблицы... что-то тут не так.
Кстати... а тебе реально надо делать выборки с детализацией поминутно? может, индекс date(datetime)+url_id более разумен? и есссно force key на выборках.

Но вообще чтобы на такой (не сказать что чрезмерной) базе сервер сдох... может, имеют место нелады в железе или ОС?

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)