|
|
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Добрый день. Прошу знатоков выразить свое мнение ( и , желательно, подвердить мнение доводами) в таком вопросе. Многое мной было прочитано из организации таблиц, но к однозначному мнению в выборе я так и не смог придти. Есть две таблицы - Родительская и дочерняя. Родительская таблица имеет 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) Родительская таблица будет иметь связь не только с одной дочерной В партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще). Помогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 14:57 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
LemkolegстольбцаЕсли в твоем сообьщении убрат все мягькие знаки, ошибок будеть менше. Lemkolegсложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3какова селективность нулевого значения? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:18 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Lemkoleg, Очень сумбурно написано. Зачем информация о родительской таблице? Каково распределение данных по значениям 3го столбца? авторВ партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще). А какое прямое назначение партиционирования? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:24 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Мимо крокодил, Администрирование записей и урезание устаревшей инфы ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:26 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Орфокл, Большинство ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:27 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Мимо крокодил, распределение даных очень резонансное 0- 80%, 1 - 18% , 2 - 2% ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:28 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
авторАдминистрирование записей и урезание устаревшей инфы И увеличение производительности, причем, оно ИМХО на 1м месте. Если партиционировать по листу по 3му полю, сделать локальный составной индекс по 1 и 2 полю, то для выполнения 1го запроса будет читаться только индекс. По 2му запросу вопрос - зачем искать строку все поля которой в фильтре? - на предмет существования? если да - то тоже прочитается только индекс. В 3м запросе - кардинальность - 3, доступ по rowid. Нюансы - деградация вставки из-за индекса и деградация апдейта из-за партиционирования - это нужно тестить, устроит ли ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:53 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Мимо крокодилавторАдминистрирование записей и урезание устаревшей инфы И увеличение производительности, причем, оно ИМХО на 1м месте. Если партиционировать по листу по 3му полю, сделать локальный составной индекс по 1 и 2 полю, то для выполнения 1го запроса будет читаться только индекс. По 2му запросу вопрос - зачем искать строку все поля которой в фильтре? - на предмет существования? если да - то тоже прочитается только индекс. В 3м запросе - кардинальность - 3, доступ по rowid. Нюансы - деградация вставки из-за индекса и деградация апдейта из-за партиционирования - это нужно тестить, устроит ли Третье поле может и будет меняться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 15:56 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Подскажите, каким образом СУБД ищет необходимую партицию? Есть ли разница в скорости поиска названии таблицы или названии партиции? Скорость вставки даных в существующюю партицию или в таблицу. Насколько мне извесно: механизм обслуживания партиций и механизм обслуживания таблиц очень похож. И там аи там - это отдельный сегмент ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:02 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
LemkolegТретье поле может и будет меняться Да, я прочитал. Вопрос в том, будет ли эта деградация заметна и влиять на работу приложения. Так как понятие "интенсивности" и возможности железа все-таки индивидуальны. Для этого нужно тестировать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:03 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
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) Родительская таблица будет иметь связь не только с одной дочерной В партировании меня смущает его непрямое назначение для увеличения производительности (тоест, целеобразно ли вобще). Помогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо Небольшое уточнение: Уникальность записей будет распространяться по первым двум столбцам ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:11 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Мимо крокодилLemkolegТретье поле может и будет меняться Да, я прочитал. Вопрос в том, будет ли эта деградация заметна и влиять на работу приложения. Так как понятие "интенсивности" и возможности железа все-таки индивидуальны. Для этого нужно тестировать. Не интенсивно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:14 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Lemkoleg, Чтобы далеко не ходить: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:24 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Мимо крокодилLemkoleg, Чтобы далеко не ходить: Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Я вкурсе, что обновления в партицировании ( изменяющее партицию) равносильно удалении и добавлении вместе взятых. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 16:34 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
LemkolegЯ склоняюсь к индекс-таблице по значения Foreign Key+Столбец№2. а чем столбец №3 так провинился, что его крохотного и ненапряжного из индекса исключили ? )) LemkolegПомогите разобраться в детялях и выбрать лучший вариант. От этого зависит успешность проэкта))) Заранее спасибо для успешности проЭкта стоит еще продумать, что делать с накоплением данных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 17:50 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
DВА, Он несет только информативность первых двух. Если человеческим языком: В каждом приюте (родительская таблица) может быть по несколько тысяч собак (столбец№2 дочерней таблицы). Каждая из них либо: привитая, либо не привитая, либо не нуждаеться в прививке (столбец №3). Не может одна из них быть и привита и не привиты одновременно. Все (большинство) даных будут актуальны. Тоесть, вопрос об их отсичении пока не расматриваеться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 18:14 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
LemkolegDВА, Он несет только информативность первых двух. Если человеческим языком: В каждом приюте (родительская таблица) может быть по несколько тысяч собак (столбец№2 дочерней таблицы). Каждая из них либо: привитая, либо не привитая, либо не нуждаеться в прививке (столбец №3). Не может одна из них быть и привита и не привиты одновременно. Все (большинство) даных будут актуальны. Тоесть, вопрос об их отсичении пока не расматриваеться наверняка в процессе експлуатации появятся -привитая но не нуждалась -нуждается в прививке но дорого -не привита, но нуждается (отказники) и тд .... stax ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 18:37 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
Неисключено. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.11.2017, 18:46 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
вам правильно заметили - у вас на старте лярд записей в дочке. имхо без секционирования не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 29.11.2017, 02:35 |
|
||
|
Что выбрать: партирование, кластеризацию или индекс-таблицу
|
|||
|---|---|---|---|
|
#18+
> Я склоняюсь к индекс-таблице если вы имели в виду Index Organized Table (IOT), то думаю это будет самый оптимальный вариант > Но тогда сложно будет выполнять запрос №1 т.к. нет индекса по столбцу№3 в случае если это будет IOT, то такой запрос может выполняться со скоростью примерно 3 тысячи раз в секунду учитывая, что при одном выполнении понадобится прочитать 8 блоков > целеобразно ли вобще на производительности не скажется > интенсивное добавление новых записей IOT - идеальный вариант, особенно если добавлять будут несколько клиентов одновременно с разными "Foreign Key" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 30.11.2017, 21:58 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=39560628&tid=1884628]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 236ms |
| total: | 418ms |

| 0 / 0 |
