Новости
Документация
Download
Webboard
Поиск
FAQ/ЧаВо
Обратная связь




MySQL.RU - Webboard



Вернуться
Эффективные хранение и обработка статистики (Alexander) 14/08/2004 - 12:15:18
      Re: Эффективные хранение и обработка статистики (walrus) 14/08/2004 - 17:15:11
      Re: Эффективные хранение и обработка статистики (Alexander) 14/08/2004 - 19:04:23
      Re: Эффективные хранение и обработка статистики (Alexander) 14/08/2004 - 19:17:13
      Re: Эффективные хранение и обработка статистики (Dinky) 16/08/2004 - 18:22:20
      Re: Эффективные хранение и обработка статистики (dxfan) 17/08/2004 - 15:30:00

> Original message text:
> From: Alexander - 14/08/2004 - 12:15:18
> Subject:Эффективные хранение и обработка статистики
> -----------------
> Вопрос скорее не по мускулу, а вопрос по эффективности хранения и обработки статистики по трафику. Есть сервер с базой данных stat, есть таблица на каждый месяц (пр. 200408Traffic) с полями src,dst,id,type,bytes,time и с несколькими индексами (иникальными и обычными). В нее постоянно должна литься статистика со считалок ~ 15-20 млн. записей в месяц. Надо сформировывать каждые 3-5 минут таблицу вида date,id,ip,bytes.
> поле id - идентификатор клиента, который берется из другой таблички с соответсвием id <-> ip. Он выставляется: update 200408Traffic set id= ... where id=0. Есть ситуации, когда юзер меняет ip в середине месяца, для этого он и нужен.
>
> Картина получается следующаяя при таких объемах записей в таблице (15-20 млн) сильно тормозится запись новых данных, т.к. есть индексы. С другой стороны формирование таблицы с обобщенными данными без индексов - в 3 минуты не уложиться явно.
>
> Посоветуйте какие-нибудь эффективные решения данного вопроса, как можно улучшить данную схему. Рад буду любым советам.
>
>


From: Alexander - 14/08/2004 - 19:17:13
Subject:Эффективные хранение и обработка статистики
-----------------
забыл...

тип таблиц myisam:

CREATE TABLE IF NOT EXISTS 200408Traffic (
collector smallint unsigned not null,
id int unsigned not null default '0',
src int unsigned not null,
dst int unsigned not null,
type smallint unsigned not null default '0',
bytes bigint unsigned not null,
time int unsigned not null,
new bool not null default '1',
PRIMARY KEY (collector,src,dst,time),
KEY (collector),
KEY (src),
KEY (dst),
KEY (type),
KEY (time),
KEY (id)
) TYPE=MyISAM;

CREATE TABLE IF NOT EXISTS 200408Total (
collector smallint unsigned not null,
date date,
id int unsigned not null,
ip_addr int unsigned not null,
type smallint unsigned not null,
bytes bigint unsigned not null,
PRIMARY KEY (date,id,ip_addr,type),
KEY (collector),
KEY (date),
KEY (id),
KEY (id,type),
KEY (ip_addr),
KEY (type)
) TYPE=MyISAM;

таблица Users ( ip_addr, id, и прочая лабуда о пользователе)

есть также табличка Address ( num, source, dest, type );

сделал так, флаг new в 1ой таблице для необработанного трафика.

обработка вида:

блокируем таблицы, по данным таблицы Address выставляем поле type в первой таблице, выставляем id по Users. далее new -> 0

сейчас формирование xTotal вида replace into xTotal select date_format(from_unixtime(time),'%Y%m%d') as date, ... group by date ...

именно последняя часть тормозит все происходящее.

думал делать временную таблицу туда пихать последний запрос но с WHERE new=1. далее данные группировать и т.д. и т.п., но возможны случаи, когда трафик со считалок попадет дважды (например неуспел закачать (у меня считалки закачивают трафик, сервак этим не занимается)), тогда будет насчет трафика дважды, это не есть хорошо.

вот.


[Это сообщение - спам!]

Последние сообщения из форума

Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL, версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
 Имя:
 E-mail:
 Тема:
 Текст:
Код подтверждения отправки: Code
16672



РЕКЛАМА НА САЙТЕ
  Создание сайтов | |