SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 18.04.2011 00:14:56

retro-kharkov
Участник
Зарегистрирован: 18.04.2011
Сообщений: 10

Partitioning по дате

Доброго времени суток!
Есть таблица в которую в течении суток ложиться от 10 до 12 млн записей, данные храняться и просматриваються в течении 4-х месяцев, т.е в общем составляет около 1,5 млрд записей, пользоваетль смотрит данные только за одни из-суток(не более), в таблице есть колонка DateTime как организовать partitioning по дням?

Неактивен

 

#2 18.04.2011 01:21:21

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Partitioning по дате

Видимо, лучше всего подойдет простое разбиение по дате на разные таблицы (вида data_2011_04_10), т.е. вставка записи в ту или иную таблицу в зависимости от конкретного значения поля DateTime.

Неактивен

 

#3 18.04.2011 01:23:53

deadka
Администратор
Зарегистрирован: 14.11.2007
Сообщений: 2422

Re: Partitioning по дате

LazY, а почему, собственно, лучше? Разве partitioning как раз не  для таких случаев был создан?


Зеленый свет для слабаков, долги отдают только трусы, тру гики работают только в консоли...

Неактивен

 

#4 18.04.2011 01:30:46

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Partitioning по дате

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

Неактивен

 

#5 18.04.2011 01:49:15

retro-kharkov
Участник
Зарегистрирован: 18.04.2011
Сообщений: 10

Re: Partitioning по дате

мдя, спасибо огромное за советы, а возможно ли чоздание новых таблиц через тригер? т.к. вставка идёт от 100 до 200 записей за раз, а такое через процедуру вроде не организовать sad

Отредактированно retro-kharkov (18.04.2011 02:04:26)

Неактивен

 

#6 18.04.2011 04:08:27

LazY
_cмельчак
MySQL Authorized Developer and DBA
Зарегистрирован: 02.04.2007
Сообщений: 849

Re: Partitioning по дате

Наоборот, у процедуры обычно шире возможности, чем у функций или триггеров.
С триггером есть проблема: сложно (а в MySQL версий более ранних, чем 5.5 вообще невозможно) корректно заставить триггер не вставлять запись в таблицу.

Через MySQL вообще довольно проблематично организовать динамическое имя таблицы в запросе в зависимости от входных данных, так что я бы на вашем месте решение, в какую таблицу вставлять, перенёс на клиент-отправитель.

Неактивен

 

#7 18.04.2011 17:00:15

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: Partitioning по дате

Как вариант, если Вы будете ротировать таблички по времени, можно вставлять всегда
в tablename_current, а при ротировании ее переименовывать в нужную. Например,

CREATE TABLE tablename_new LIKE tablename_current;
RENAME TABLE tablename_current TO tablename_20111804, tablename_new TO tablename_current;

Последняя операция блокирует все три имени, поэтому потерянных строк не будет.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson