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




MySQL.RU - Webboard



Вернуться
миграция с merge на partitioning (Po4emu4ka) 21/05/2012 - 13:01:06
      Re: миграция с merge на partitioning (Akina) 21/05/2012 - 17:08:08
      Re: миграция с merge на partitioning (Po4emu4ka) 22/05/2012 - 10:28:50
      Re: миграция с merge на partitioning (Akina) 22/05/2012 - 23:22:18

> Original message text:
> From: Po4emu4ka - 21/05/2012 - 13:01:06
> Subject:миграция с merge на partitioning
> -----------------
> Всем привет. Хочу попросить совет.
> У меня была старая merge-табличка на старой базе. Сейчас поставили новую базу и я хочу перейти на partitioning.
> Но выдаёт ошибку...
>
> CREATE TABLE `tablename` (
> `user` varchar(20) NOT NULL default '',
> `msgorid` text,
> `status` int(5) default NULL,
> `id` bigint(20) NOT NULL auto_increment,
> `ts` timestamp NOT NULL default CURRENT_TIMESTAMP on update CURRENT_TIMESTAMP,
> PRIMARY KEY (`id`),
> KEY `ts_idx` (`ts`),
> ) PARTITION BY HASH(MONTH(ts)) PARTITIONS 12;
>
> Выкидывает, что "Constant, random or timezone-dependent expressions in (sub)partitioning function are not allowed".
>
> Подскажите, как лучше реализовать разбиение по месяцам? (учитывая, что раз в какое-то время будет запускаться скрипт и подчищать старые ненужные данные, освобождая место партиции под данные нового года)
>
>
>


From: Po4emu4ka - 22/05/2012 - 10:28:50
Subject:миграция с merge на partitioning
-----------------


>редложение. Заведите поле (tinyint достаточно). Триггером (before insert/update) экстрагируйте из ts номер месяца. И рубите на партиции по этому полю.

Да, я этот вариант уже тоже рассматривал.
Я впервые буду использовать эту технологию, поэтому пока слабо ориентируюсь. Но судя по мануалам, которые прочитал, то при введении дополнительного поля - месяца, для оптимизации запросов к таблице, мне в WHERE надо будет ещё указывать это поле? Это так или я что-то неправильно прочитал? Тогда надо будет менять и все скрипты тоже, что, конечно, не невыполнимый вариант, но не из самых приятных. :)

Тут ещё закаывка. В манулах обычно норма вещей - делать range по полю, определённому как DATE. У меня же timestamp и на него всё время ругается mysql... Типа "Field 'ts' is of a not allowed type for this type of partitioning" ну или той, что описана выше.

Эх, чую так гладко всё не пойдёт, как надеялся. Но с merge уходить всё-таки надо...


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

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

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



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