Задавайте вопросы, мы ответим
Вы не зашли.
Доброго времени суток!
Есть таблица в которую в течении суток ложиться от 10 до 12 млн записей, данные храняться и просматриваються в течении 4-х месяцев, т.е в общем составляет около 1,5 млрд записей, пользоваетль смотрит данные только за одни из-суток(не более), в таблице есть колонка DateTime как организовать partitioning по дням?
Неактивен
Видимо, лучше всего подойдет простое разбиение по дате на разные таблицы (вида data_2011_04_10), т.е. вставка записи в ту или иную таблицу в зависимости от конкретного значения поля DateTime.
Неактивен
LazY, а почему, собственно, лучше? Разве partitioning как раз не для таких случаев был создан?
Неактивен
Partitioning, на мой взгляд, для данного случая является неоправданно ресурсоёмким и сложным в управлении решением.
Если совместного обращения к таблицам (т.е. когда одновременно нужны данные из более чем одной таблицы) не будет, то лучше их в отдельных таблицах и держать.
Неактивен
мдя, спасибо огромное за советы, а возможно ли чоздание новых таблиц через тригер? т.к. вставка идёт от 100 до 200 записей за раз, а такое через процедуру вроде не организовать
Отредактированно retro-kharkov (18.04.2011 02:04:26)
Неактивен
Наоборот, у процедуры обычно шире возможности, чем у функций или триггеров.
С триггером есть проблема: сложно (а в MySQL версий более ранних, чем 5.5 вообще невозможно) корректно заставить триггер не вставлять запись в таблицу.
Через MySQL вообще довольно проблематично организовать динамическое имя таблицы в запросе в зависимости от входных данных, так что я бы на вашем месте решение, в какую таблицу вставлять, перенёс на клиент-отправитель.
Неактивен
Как вариант, если Вы будете ротировать таблички по времени, можно вставлять всегда
в tablename_current, а при ротировании ее переименовывать в нужную. Например,
CREATE TABLE tablename_new LIKE tablename_current;
RENAME TABLE tablename_current TO tablename_20111804, tablename_new TO tablename_current;
Последняя операция блокирует все три имени, поэтому потерянных строк не будет.
Неактивен