|
|
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Посоветуйте: Есть много таблиц главные ключи которых формируются автоматом в тригере на инсерт с использованием секвенции (последовательности). Как лучше (оптимальнее) - создать одну последовательность для всех таких таблиц (к примеру 50 штук), или для каждой таблицы создавать свою секвенцию. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 07:04 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Вобщем-то неважно, делай один Sequence на все таблицы, максимальное число у них большое... Ну, разве что на таблицы, в которые часто вставка происходит - свои сиквенсы можно сделать, а на остальные одну... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 08:29 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Esli yge vse ravno ispol'zuetsya trigger, ya by sdelal tak: Select NVL(max(id),0) + 1 Into iterator from my_tab; :NEW.ID := iterator; { bez obrasheniya k Data Dictionary za Sequence....} ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 09:02 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Это может имет значение при репликации. Так как сиквенсы не реплицируются, и если ты сам не предусмотрел никакого дргуго варианта - то при переходе на работу с резервным сервером, встанет вопрос как восстановить значения сиквенсов? Если у тебя на каждую таблицу свой сиквенс, то значение сиквенса можно установить по максимальному значению поля в таблице. Если же у тебя одмн сиквенс на всех, тогда придёться искать максимальное значение среди всех таблиц. Вообще это всё очень неудобно с этими сиквенсами получается в случае репликации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 09:14 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Я так понял Oracle X-pert не советует секвенцией пользоваться для формирования значения ключей? А почему? А способ предложенный им впоследствии никак не аукнится? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 10:01 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
To: Oracle X-pert помоему такой способ крайне не эффективен и вообще опасен что произойдет когда две сессии попытаются вставить записи одновременно? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 10:25 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
"А способ предложенный им впоследствии никак не аукнится?" "Select NVL(max(id),0) + 1 Into iterator from my_tab; " to Ulba_2002: Аукнится, еще как аукнится. Представь несколько пользователей одновременно обращаются к такой таблице с помощью вышеуказанного запроса - все пользователи получают одно и тоже значение и все пытаются вставить новую строку. В итоге - тот кто успел раньше - тот молодец, тот кто не успел, тот как говорится - будет заново вводить данные в какой нибудь форме итд итп. Опять же дополнительная нагрузка - ведь такой способ предлагается для всех таблиц. Так вот представь, теперь для каждой вставки нужно будет делать всегда запрос. В итоге производительность работы юзеров резко падает, кого будут после этого бить по голове - сам понимаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 10:26 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Sequence ne vsegda opravdan. V sluchae intensivnyh izmenenii dannyh moget byt' poterya pocledovatelnosti znachenii ( for example, 1,2,5,6,15 etc..) iz-za cash parametra. esli ego pistavit' ka ravnyi 1 to moget vozniknyt' situazia "wait for seq number". Eto samye prostye primery. A voobshe, vse zavisit ot konkretnyh obstoyatelstv. V tvoem sluchae, esli ty stroish seq per table, to dostatochno bol'shoi segment memory bydet sledit' za raspredeleniem nomerov.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 10:27 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
>esli ego pistavit' ka ravnyi 1 to moget vozniknyt' situazia "wait for seq number". пытался понять эту фразу, но не смог > V tvoem sluchae, esli ty stroish seq per table, to dostatochno bol'shoi segment memory bydet sledit' za raspredeleniem nomerov я вас умоляю... вообще прочел нитку, почему то никто не заметил, что пользуясь триггерным подходом к заполнению первичных ключей, грех уже там что-то говорить об издержках сиквенсов и экономии на обращениях к data dictionary ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 15:25 |
|
||
|
Нужен совет о Sequences для ключей в Tables
|
|||
|---|---|---|---|
|
#18+
Если честно, лично я про триггеры я вообще молчу, потому-что вовсе их не использую. В своё время общим мненим коллектива разработчиков было принято решение не использовать триггеры на Oracle, как средство только тормозящее работу. Поэтому каждый раз при упоминании кем-либо использования триггеров считаю безсмысленным выражать свою точку зрения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.02.2003, 16:41 |
|
||
|
|

start [/forum/topic.php?fid=52&msg=32111835&tid=1991681]: |
0ms |
get settings: |
9ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
170ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
60ms |
get tp. blocked users: |
1ms |
| others: | 219ms |
| total: | 492ms |

| 0 / 0 |
