Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос по partitioning / 13 сообщений из 13, страница 1 из 1
27.10.2008, 13:13
    #35617767
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
Всем привет!

У меня есть довольно большая таблица - пул транзакций, но я использую для своих вычислений только данные за последний месяц и год.
Что я хочу сделать, так это разбить на партиции эту таблицу, чтоб была отдельная таблица для данных за текущий месяц, за текущий год и архив, но я не могу использовать при партицировании не константные объекты в CHECK, т.е. я не могу написть что-то вида extract('month' from CURRENT_DATE), extract('year' from CURRENT_DATE) для CHECK.

transaction_pool - master table

transaction_currentmonth - за текущий месяц
transaction_currentyear - за текущий год, но без transaction_currentmonth
transaction_archive - все кроме transaction_currentmonth, transaction_currentyear

Как бы мне такое дело организовать? Пускать хранимую процедуру в конце каждого месяца, года по cron-у и переносить expired rows в нужные таблицы (партиции)?

Спасибо.
...
Рейтинг: 0 / 0
27.10.2008, 13:52
    #35617884
KRED
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
Как вариант можно создавать необходимые партиции каждый месяц ... а можно и насоздвать на весь следующий год :-)

Партиции в постгресте по сравнению с Ораклом ... это как ручная коробка в сравнении с автомат-коробкой :-)
...
Рейтинг: 0 / 0
27.10.2008, 15:31
    #35618210
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
KREDКак вариант можно создавать необходимые партиции каждый месяц ... а можно и насоздвать на весь следующий год :-)


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

[quot]
Партиции в постгресте по сравнению с Ораклом ... это как ручная коробка в сравнении с автомат-коробкой :-)[/quot]

Предпочитаю типтроник :)
...
Рейтинг: 0 / 0
27.10.2008, 17:00
    #35618474
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
авторУ меня есть довольно большая таблица - пул транзакций, но я использую для своих вычислений только данные за последний месяц и год.

сделайде как в мане по постгресу написано жмак .
во время выборки вам никто не мешает задать условие на текущий месяц или год если все правильно зделали то постгрес не будет обращаться к ненужным таблицам
...
Рейтинг: 0 / 0
27.10.2008, 17:08
    #35618500
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
ss25авторУ меня есть довольно большая таблица - пул транзакций, но я использую для своих вычислений только данные за последний месяц и год.

сделайде как в мане по постгресу написано жмак .
во время выборки вам никто не мешает задать условие на текущий месяц или год если все правильно зделали то постгрес не будет обращаться к ненужным таблицам

конечно же я читал это ине раз, в том то и дело, что мне не нравится такой способ организации. я думал, что может у кого-то есть более удачные идеи или решения...
...
Рейтинг: 0 / 0
27.10.2008, 17:14
    #35618517
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
почему не нравится то? сделайте в дополнение к тому, как написано в доке, create view measurement_last_month as select * from measurement where logdate > now() - '1 month'. зато не придется, как вы предлагаете "переносить expired rows в нужные таблицы (партиции)".
...
Рейтинг: 0 / 0
27.10.2008, 17:24
    #35618549
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
LeXa NalBatпочему не нравится то? сделайте в дополнение к тому, как написано в доке, create view measurement_last_month as select * from measurement where logdate > now() - '1 month'. зато не придется, как вы предлагаете "переносить expired rows в нужные таблицы (партиции)".

почему не нравится, не очень хочется плодить на каждый месяй по таблице, тем более, что они мне абсолютно не нужны. разве что создавать на год вперед а впрошествии года дропать их все и создавать на следующий. или вынести их еще и в отдельную схему.. хм.. как-то оно все мутно.. нет удобного решения, чтоб динамические партиции строить...
...
Рейтинг: 0 / 0
27.10.2008, 17:38
    #35618591
LeXa NalBat
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
посмотрите об автоматическом создании партиций http://sql.ru/forum/actualthread.aspx?tid=405908 , может по форуму еще можно найти
...
Рейтинг: 0 / 0
28.10.2008, 10:52
    #35619737
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
вот интересно, это нормально когда при использовании schema и partitioning - master table лежит в одном неймспейсе, в том же public, а все таблицы (партиции) что наследуются от master table лежат в другом, например derived неймспейсе (schema) ? этих дочерних таблиц у меня будет по 12 в год плодиться.
...
Рейтинг: 0 / 0
28.10.2008, 11:03
    #35619770
Sergey Levchenko
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
кстати, http://postgrestips.blogspot.com/
...
Рейтинг: 0 / 0
28.10.2008, 19:00
    #35621412
MySQLCraft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
ИМХО, тут партиционирование не нужно.

Создайте три таблицы: "ТекущийМесяц", "ТекущийГод", "Архив"

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

Любым способом организуйте своевременный запуск
процедур переноса устаревших данных (по условию)

из таблицы "ТекущийМесяц" в "ТекущийГод" (запускается 1 раз в месяц)
из таблицы "ТекущийГод" в "Архив" (запускается 1 раз в год)

Если Автовакуум не справится, то после переноса запустить Вакуум.
...
Рейтинг: 0 / 0
29.10.2008, 17:51
    #35623787
ss25
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
авторИМХО, тут партиционирование не нужно.
если записей в таблице меньше 1М за месяц
...
Рейтинг: 0 / 0
29.10.2008, 19:16
    #35623994
MySQLCraft
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
вопрос по partitioning
1M пустяки, для 1 раза в месяц.
...
Рейтинг: 0 / 0
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / вопрос по partitioning / 13 сообщений из 13, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]