|
Секционирование
|
|||
---|---|---|---|
#18+
Всем привет! Помогите решить такую задачу! Есть таблица заказов клиентов, которую хочу секционировать, но по "хитрому". Чтобы была одна секция в которую всегда был insert по-умолчанию, а по мере "старения" данных, перемещать их вручную в "архивные" секции. Объясню зачем так: Мне удобней написать SELECT ONLY FROM , чтобы получить "живые" данные, а для получения данных из архива просто SELECT FROM . С декларативным описанием Postgres 12 не могу получить такую структуру таблицы (и соответственно всех ее подчиненных). А если идти через INHERITS , то писать доп. триггеры не очень хочется. P.S> Сейчас сделано через схемы: 2014-год,2015-год... и чтобы выбрать данные по всей базе (шеф просит) нужно писать через union Заранее спасибо! ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 15:40 |
|
Секционирование
|
|||
---|---|---|---|
#18+
Squamis, Вы хотите очень странного. Зачем вам движение всех данных по прошествии какого-то времени, если оно “само” так работает? Если сделать обычное RANGE секционирование, скажем, по месяцам, то все INSERT-ы будут всегда лететь в заведомо известную секцию (никаких триггеров не надо даже). И выбирать можно из текущей партиции, хотя я тут тоже не вижу никакого смысла. ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 16:37 |
|
Секционирование
|
|||
---|---|---|---|
#18+
Согласен, полностью. Но, хочу чтобы в основной части программы все "летало", используя только "живые" данные. А в статистиках "шерстило" по всей базе. Range не очень спасает, т.к. заказы могут длится 2-3 месяца, при этом он считается "живым" и запросам придется лезть в "старые секции", а хотел бы выбирать только из одной, пока сам не решу, что заказ старый и переместить его в "архив". Как-то так. Понимаю - бред. Но, вдруг у кого-то "мысля-идея" придет в голову :) ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 16:45 |
|
Секционирование
|
|||
---|---|---|---|
#18+
так добавьте поле статус заказа и по нему секционируйте ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 17:01 |
|
Секционирование
|
|||
---|---|---|---|
#18+
Это хорошая идея, спасибо. А есть ли возможность у заказов со статусом "архивный" разделить на дополнительные секции. Например: таблица orders 1. Секция - orders_live (живые заказы) 2. Секция - orders_archive (архивные заказы) 2.1. Субсекция - 2020.01 за январь 2.2. Субсекция - 2020.02 за февраль .... 2.n. Субсекция - .... ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 17:29 |
|
Секционирование
|
|||
---|---|---|---|
#18+
докаСами секции могут представлять собой секционируемые таблицы, благодаря применению так называемого вложенного секционирования. В секциях могут быть определены свои индексы, ограничения и значения по умолчанию, отличные от других секций. Индексы должны создаваться для каждой секции независимо. Подробнее о секционированных таблицах и секциях рассказывается в описании CREATE TABLE. например ... |
|||
:
Нравится:
Не нравится:
|
|||
02.03.2021, 18:09 |
|
Секционирование
|
|||
---|---|---|---|
#18+
Вопрос в продолжении темы. У кого то был опыт перемещения отдельных партиций партицированной таблицы в другое табличное пространство? Это возможно? Какие есть ограничения? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 12:33 |
|
Секционирование
|
|||
---|---|---|---|
#18+
lex-sey Вопрос в продолжении темы. У кого то был опыт перемещения отдельных партиций партицированной таблицы в другое табличное пространство? Это возможно? Какие есть ограничения? Возможно. Никаких ограничений нет. Если возможно на время переноса эту партицию убрать вообще из данных то будет еще и без лишних блокировок. Последовательность операций: ALTER TABLE [ IF EXISTS ] name DETACH PARTITION partition_name ALTER TABLE ALL IN TABLESPACE name [ OWNED BY role_name [, ... ] ] SET TABLESPACE new_tablespace [ NOWAIT ] ALTER TABLE [ IF EXISTS ] name ATTACH PARTITION partition_name { FOR VALUES partition_bound_spec | DEFAULT } Но лучше проверить на тестовой базе конечно. Ну или pg_repack -s, --tablespace=TBLSPC move repacked tables to a new tablespace в помощь там совсем легко и просто. -- Maxim Boguk лучшая поддержка PostgreSQL: dataegret.ru ... |
|||
:
Нравится:
Не нравится:
|
|||
04.06.2021, 22:55 |
|
|
start [/forum/topic.php?fid=53&fpage=10&tid=1993996]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
341ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 444ms |
0 / 0 |