Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как партицировать таблицу? / 3 сообщений из 3, страница 1 из 1
25.02.2017, 20:27
    #39410209
Dened
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как партицировать таблицу?
Добрый день!

Есть список клиентов, которые в течении года приходят и уходят, хочется раз в год ушедших в прошлом году клиентов выделить в отдельную партицию и отключить в дальнейшем.
А вернее весь хлам от клиентов:
- список товаров ~1млн записей для одного клиента
- у каждого товара от 1 до 20 различных свойств(строка до 2000 символов)

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

Все, что приходит в голову:
1. конечно возможно это безумие, но все же - автоматически выделять партицию для каждого клиента(я про таблицу свойств). пока даже не знаю возможно ли такое, видел примеры про интервалы, но там везде для даты, а у меня тут даты нет, есть id клиента.
2. двигать ненужные данные в отдельные партиции раз в год, но мне кажется это долго, все равно что партицировать огромную таблицу.
3...?

Клиентов порядка 20 000.

Посоветуйте что-нибудь, или подскажите что почитать.

Спасибо!
...
Рейтинг: 0 / 0
26.02.2017, 12:27
    #39410331
Oleg M.Ivanov
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как партицировать таблицу?
По ID клиента прекрасно будет партиционироваться и последующим удалением партиций.
...
Рейтинг: 0 / 0
27.02.2017, 06:28
    #39410556
Dened
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как партицировать таблицу?
Сделал вариант с отдельной партицией под каждого клиента:
create table order_attr(
clientid number(20),
orderid number(20),
--
udate date,
attrid number(20),
val varchar2(2000)
) partition by range (clientid)
INTERVAL(1) ( PARTITION FIRST VALUES LESS THAN (2) ) ;

create index order_attr_orderid_i on order_attr (orderid) local;

Все вроде работает, новые клиенты выделяются в отдельные партиции.

Проверил отключение:
create table order_attr_arc
as select * from order_attr where rownum < 1;

create index order_attr_arc_orderid_i on order_attr_arc (orderid);

alter table order_attr
exchange partition SYS_P33250
with table order_attr_arc
including indexes with validation;

Остается надеяться, что автоматическое выделение партиций не будет требовать много ресурсов.
...
Рейтинг: 0 / 0
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Как партицировать таблицу? / 3 сообщений из 3, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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