powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Что выбрать: партирование, кластеризацию или индекс-таблицу
21 сообщений из 21, страница 1 из 1
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560599
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый день. Прошу знатоков выразить свое мнение ( и , желательно, подвердить мнение доводами) в таком вопросе. Многое мной было прочитано из организации таблиц, но к однозначному мнению в выборе я так и не смог придти. Есть две таблицы - Родительская и дочерняя. Родительская таблица имеет Prymary Key (number (20)) и еще несколько независимых столбцов с пороядка 1 000 000 записей. Дочерняя имеет всего три столбца (Foreign Key на материнскую таблицу, number (20), number (1) может принимать значения 0, 1 или 2 и могут меняться в процессе работы). В дочерной таблицы имееться много записей ( порядка по 1000 ) по каждому Foreign Key. Значения первого, второго и третьего столбца вместе организовуют уникальное значение. Суть вопроса заключаеться в следуещем: необходимо выбрать оптимальный вариант организации дочерной таблицы с учетом вот таких особенностей системы :

а) ожидаеться множество паралельных запросов трех видов :;1. выборка всего содержимого стольбца №2 принадлежащему одному конкретному Foreign Key и где значение стольбца №3 равно 0.; 2. выборка конкретного значения столбца №2, принадлежащему конкретному Foreign Key и где значение стольбца №3 равно 0.; 3. выборка значения столбца №3 принадлежащему одному конкретному Foreign Key и одному конкретному значению столбца №2.
б) интенсивное добавление новых записей.

Я склоняюсь к индекс-таблице по значения Foreign Key+Столбец№2. Но тогда сложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3 плюс, не знаю, на сколько будет тормозить добавление новых записей.

Расматривал кластеризацию по ключам этих двух таблиц, но есть три проблемы: а)даные в дочерней таблице не будут по-порядку, что будет тормозить запрос №2 и№3 т.к. придеться сканить весь кластер. 2) Усложняет добавление новых записей. 3) Родительская таблица будет иметь связь не только с одной дочерной

В партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще).

Помогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560621
Орфокл
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
LemkolegстольбцаЕсли в твоем сообьщении убрат все мягькие знаки, ошибок будеть менше.
Lemkolegсложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3какова селективность нулевого значения?
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560628
Lemkoleg,

Очень сумбурно написано. Зачем информация о родительской таблице?
Каково распределение данных по значениям 3го столбца?

авторВ партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще).

А какое прямое назначение партиционирования?
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560631
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо крокодил,
Администрирование записей и урезание устаревшей инфы
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560632
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Орфокл,
Большинство
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560634
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо крокодил, распределение даных очень резонансное 0- 80%, 1 - 18% , 2 - 2%
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560659
авторАдминистрирование записей и урезание устаревшей инфы
И увеличение производительности, причем, оно ИМХО на 1м месте.

Если партиционировать по листу по 3му полю, сделать локальный составной индекс по 1 и 2 полю, то для выполнения 1го запроса будет читаться только индекс. По 2му запросу вопрос - зачем искать строку все поля которой в фильтре? - на предмет существования? если да - то тоже прочитается только индекс. В 3м запросе - кардинальность - 3, доступ по rowid.
Нюансы - деградация вставки из-за индекса и деградация апдейта из-за партиционирования - это нужно тестить, устроит ли
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560661
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо крокодилавторАдминистрирование записей и урезание устаревшей инфы
И увеличение производительности, причем, оно ИМХО на 1м месте.

Если партиционировать по листу по 3му полю, сделать локальный составной индекс по 1 и 2 полю, то для выполнения 1го запроса будет читаться только индекс. По 2му запросу вопрос - зачем искать строку все поля которой в фильтре? - на предмет существования? если да - то тоже прочитается только индекс. В 3м запросе - кардинальность - 3, доступ по rowid.
Нюансы - деградация вставки из-за индекса и деградация апдейта из-за партиционирования - это нужно тестить, устроит ли

Третье поле может и будет меняться
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560667
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подскажите, каким образом СУБД ищет необходимую партицию? Есть ли разница в скорости поиска названии таблицы или названии партиции? Скорость вставки даных в существующюю партицию или в таблицу. Насколько мне извесно: механизм обслуживания партиций и механизм обслуживания таблиц очень похож. И там аи там - это отдельный сегмент
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560669
LemkolegТретье поле может и будет меняться

Да, я прочитал. Вопрос в том, будет ли эта деградация заметна и влиять на работу приложения. Так как понятие "интенсивности" и возможности железа все-таки индивидуальны. Для этого нужно тестировать.
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560672
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegДобрый день. Прошу знатоков выразить свое мнение ( и , желательно, подвердить мнение доводами) в таком вопросе. Многое мной было прочитано из организации таблиц, но к однозначному мнению в выборе я так и не смог придти. Есть две таблицы - Родительская и дочерняя. Родительская таблица имеет Prymary Key (number (20)) и еще несколько независимых столбцов с пороядка 1 000 000 записей. Дочерняя имеет всего три столбца (Foreign Key на материнскую таблицу, number (20), number (1) может принимать значения 0, 1 или 2 и могут меняться в процессе работы). В дочерной таблицы имееться много записей ( порядка по 1000 ) по каждому Foreign Key. Значения первого, второго и третьего столбца вместе организовуют уникальное значение. Суть вопроса заключаеться в следуещем: необходимо выбрать оптимальный вариант организации дочерной таблицы с учетом вот таких особенностей системы :

а) ожидаеться множество паралельных запросов трех видов :;1. выборка всего содержимого стольбца №2 принадлежащему одному конкретному Foreign Key и где значение стольбца №3 равно 0.; 2. выборка конкретного значения столбца №2, принадлежащему конкретному Foreign Key и где значение стольбца №3 равно 0.; 3. выборка значения столбца №3 принадлежащему одному конкретному Foreign Key и одному конкретному значению столбца №2.
б) интенсивное добавление новых записей.

Я склоняюсь к индекс-таблице по значения Foreign Key+Столбец№2. Но тогда сложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3 плюс, не знаю, на сколько будет тормозить добавление новых записей.

Расматривал кластеризацию по ключам этих двух таблиц, но есть три проблемы: а)даные в дочерней таблице не будут по-порядку, что будет тормозить запрос №2 и№3 т.к. придеться сканить весь кластер. 2) Усложняет добавление новых записей. 3) Родительская таблица будет иметь связь не только с одной дочерной

В партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще).

Помогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо

Небольшое уточнение: Уникальность записей будет распространяться по первым двум столбцам
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560674
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо крокодилLemkolegТретье поле может и будет меняться

Да, я прочитал. Вопрос в том, будет ли эта деградация заметна и влиять на работу приложения. Так как понятие "интенсивности" и возможности железа все-таки индивидуальны. Для этого нужно тестировать.
Не интенсивно
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560683
Lemkoleg,

Чтобы далеко не ходить:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table tst1 partition by list (des) 
( PARTITION AAA VALUES ('aaa')
, PARTITION BBB VALUES ('bbb')) as
 select level lvl, 'aaa' des from dual connect by rownum < 1000000;
alter table tst1 enable row movement;
 
create table tst2 as
 select level lvl, 'aaa' des from dual connect by rownum < 1000000; 
 
update tst1 set des = 'bbb'; -- 50 seconds
commit;
update tst2 set des = 'bbb'; -- 16 seconds
commit;
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560693
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимо крокодилLemkoleg,

Чтобы далеко не ходить:
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
create table tst1 partition by list (des) 
( PARTITION AAA VALUES ('aaa')
, PARTITION BBB VALUES ('bbb')) as
 select level lvl, 'aaa' des from dual connect by rownum < 1000000;
alter table tst1 enable row movement;
 
create table tst2 as
 select level lvl, 'aaa' des from dual connect by rownum < 1000000; 
 
update tst1 set des = 'bbb'; -- 50 seconds
commit;
update tst2 set des = 'bbb'; -- 16 seconds
commit;



Я вкурсе, что обновления в партицировании ( изменяющее партицию) равносильно удалении и добавлении вместе взятых.
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560764
Фотография DВА
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegЯ склоняюсь к индекс-таблице по значения Foreign Key+Столбец№2.

а чем столбец №3 так провинился, что его крохотного и ненапряжного из индекса исключили ? ))

LemkolegПомогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо
для успешности проЭкта стоит еще продумать, что делать с накоплением данных
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560777
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DВА,
Он несет только информативность первых двух. Если человеческим языком: В каждом приюте (родительская таблица) может быть по несколько тысяч собак (столбец№2 дочерней таблицы). Каждая из них либо: привитая, либо не привитая, либо не нуждаеться в прививке (столбец №3). Не может одна из них быть и привита и не привиты одновременно. Все (большинство) даных будут актуальны. Тоесть, вопрос об их отсичении пока не расматриваеться
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560794
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LemkolegDВА,
Он несет только информативность первых двух. Если человеческим языком: В каждом приюте (родительская таблица) может быть по несколько тысяч собак (столбец№2 дочерней таблицы). Каждая из них либо: привитая, либо не привитая, либо не нуждаеться в прививке (столбец №3). Не может одна из них быть и привита и не привиты одновременно. Все (большинство) даных будут актуальны. Тоесть, вопрос об их отсичении пока не расматриваеться
наверняка в процессе експлуатации появятся
-привитая но не нуждалась
-нуждается в прививке но дорого
-не привита, но нуждается (отказники)
и тд

....
stax
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560803
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неисключено.
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39560975
х.з.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вам правильно заметили - у вас на старте лярд записей в дочке. имхо без секционирования не обойтись.
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39562231
Rudyshin Sergey
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Я склоняюсь к индекс-таблице

если вы имели в виду Index Organized Table (IOT), то думаю это будет самый оптимальный вариант

> Но тогда сложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3

в случае если это будет IOT, то такой запрос может выполняться со скоростью примерно 3 тысячи раз в секунду
учитывая, что при одном выполнении понадобится прочитать 8 блоков

> целеобразно ли вобще

на производительности не скажется

> интенсивное добавление новых записей

IOT - идеальный вариант, особенно если добавлять будут несколько клиентов одновременно с разными "Foreign Key"
...
Рейтинг: 0 / 0
Что выбрать: партирование, кластеризацию или индекс-таблицу
    #39579492
Lemkoleg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rudyshin Sergey, спасибо
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Что выбрать: партирование, кластеризацию или индекс-таблицу
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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