|
MySQL.RU - Webboard
Вернуться
Подскажите, оптимальна ли структура? (Po4emu4ka) 14/09/2016 - 10:44:21
Re: Подскажите, оптимальна ли структура? (Akina) 14/09/2016 - 14:39:51
Re: Подскажите, оптимальна ли структура? (Po4emu4ka) 14/09/2016 - 17:09:25
Re: Подскажите, оптимальна ли структура? (Akina) 14/09/2016 - 17:27:28
> Original message text:
> From: Po4emu4ka - 14/09/2016 - 10:44:21
> Subject:Подскажите, оптимальна ли структура?
> -----------------
> Дело в том, что нужна таблица для хранения активных и архивных сессий. Т.е. приходит событие СТАРТ - создаётся запись с start_time=now(), stop_time=0. Приходит событие СТОП, устанавливается stop_time=now(). Поскольку поиск программы идёт в открытых сессиях, в основном, то хочется сделать таблицу с партициями, где бы в одной партиции держала открытые и в других - остальное. С возможностью перехода в архивы по месяцам.
> Нормальна ли такая конструкция будет? Давно не создавал новых баз/таблиц, может уже чего-то по новому можно сделать, оптимальнее? :)
>
> CREATE TABLE session (
> digituser decimal(11,0) NOT NULL DEFAULT '0',
> ipv4 int(10) unsigned default NULL,
> ipv6 char(45) DEFAULT NULL,
> session_id char(100) NOT NULL,
> start_time int unsigned,
> stop_time int unsigned default 0,
> UNIQUE KEY `session_stop_idx` (`session_id`,`stop_time`),
> KEY `digituser_idx` (`digituser`),
> KEY `ipv4_idx` (`ipv4`),
> KEY `ipv6_idx` (`ipv6`),
> KEY `start_time_idx` (`start_time`),
> KEY `stop_time_idx` (`stop_time`)) ENGINE = MYISAM
> PARTITION BY RANGE(stop_time) (
> PARTITION p0 VALUES LESS THAN (1),
> PARTITION p1 VALUES LESS THAN ( UNIX_TIMESTAMP('2016-09-01 00:00:00') ),
> PARTITION p2 VALUES LESS THAN ( UNIX_TIMESTAMP('2016-10-01 00:00:00') ),
> PARTITION p3 VALUES LESS THAN ( UNIX_TIMESTAMP('2016-11-01 00:00:00') ),
> PARTITION p4 VALUES LESS THAN ( UNIX_TIMESTAMP('2016-12-01 00:00:00') ),
> PARTITION p5 VALUES LESS THAN ( UNIX_TIMESTAMP('2017-01-01 00:00:00') ),
> PARTITION p6 VALUES LESS THAN ( UNIX_TIMESTAMP('2017-02-01 00:00:00') )
> );
>
>
From: Po4emu4ka - 14/09/2016 - 17:09:25
Subject:Подскажите, оптимальна ли структура?
-----------------
Дело в том, что поток сессий огромный. И количество активных - более половины миллиона и будет прирастать. И по событию СТОП очень нежелательно делать дополнительный селект (иначе никак, в СТОПе отсутствует часть информации, которая есть в СТАРТ и которая нужна - особенно время начала), чтобы вытащить активную сессию и перенести её в архив.
А так - есть insert по START, есть UPDATE по СТОП и _всё_.
При этом, поиск по партиции, где stop_time=0 остаётся довольно быстрый.
Как мне кажется.
[Это сообщение - спам!]
Последние сообщения из форума
Уважаемые посетители форума MySQL.RU!
Убедительная просьба, прежде чем задавать свой вопрос в этом форуме, обратите внимание на разделы:
- ответы на наиболее часто задаваемые вопросы - FAQ
- раздел документация
- раздел поиск по сообщениям форума и документации
Также, старайтесь наиболее подробно указывать свою ситуацию (версию операционной системы, версию MySQL,
версию программного обеспечения, по которому возникает вопрос, текст возникающих ошибок, и др.)
Помните, чем конкретнее Вы опишете ситуацию, тем больше шансов получить реальную помощь.
43629
|
|