Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Нужен совет о Sequences для ключей в Tables / 10 сообщений из 10, страница 1 из 1
27.02.2003, 07:04
    #32111820
Ulba_2002
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
Посоветуйте: Есть много таблиц главные ключи которых формируются автоматом в тригере на инсерт с использованием секвенции (последовательности). Как лучше (оптимальнее) - создать одну последовательность для всех таких таблиц (к примеру 50 штук), или для каждой таблицы создавать свою секвенцию.
...
Рейтинг: 0 / 0
27.02.2003, 08:29
    #32111835
m_kus
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
Вобщем-то неважно, делай один Sequence на все таблицы, максимальное число у них большое... Ну, разве что на таблицы, в которые часто вставка происходит - свои сиквенсы можно сделать, а на остальные одну...
...
Рейтинг: 0 / 0
27.02.2003, 09:02
    #32111851
Oracle X-pert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
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....}
...
Рейтинг: 0 / 0
27.02.2003, 09:14
    #32111860
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
Это может имет значение при репликации. Так как сиквенсы не реплицируются, и если ты сам не предусмотрел никакого дргуго варианта - то при переходе на работу с резервным сервером, встанет вопрос как восстановить значения сиквенсов? Если у тебя на каждую таблицу свой сиквенс, то значение сиквенса можно установить по максимальному значению поля в таблице. Если же у тебя одмн сиквенс на всех, тогда придёться искать максимальное значение среди всех таблиц.

Вообще это всё очень неудобно с этими сиквенсами получается в случае репликации.
...
Рейтинг: 0 / 0
27.02.2003, 10:01
    #32111890
Ulba_2002
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
Я так понял Oracle X-pert не советует секвенцией пользоваться для формирования значения ключей? А почему? А способ предложенный им впоследствии никак не аукнится?
...
Рейтинг: 0 / 0
27.02.2003, 10:25
    #32111908
D_A
D_A
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
To: Oracle X-pert
помоему такой способ крайне не эффективен и вообще опасен
что произойдет когда две сессии попытаются вставить записи одновременно?
...
Рейтинг: 0 / 0
27.02.2003, 10:26
    #32111910
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
"А способ предложенный им впоследствии никак не аукнится?"

"Select NVL(max(id),0) + 1
Into iterator
from my_tab; "


to Ulba_2002:
Аукнится, еще как аукнится. Представь несколько пользователей одновременно обращаются к такой таблице с помощью вышеуказанного запроса - все пользователи получают одно и тоже значение и все пытаются вставить новую строку. В итоге - тот кто успел раньше - тот молодец, тот кто не успел, тот как говорится - будет заново вводить данные в какой нибудь форме итд итп. Опять же дополнительная нагрузка - ведь такой способ предлагается для всех таблиц. Так вот представь, теперь для каждой вставки нужно будет делать всегда запрос.

В итоге производительность работы юзеров резко падает, кого будут после этого бить по голове - сам понимаешь.
...
Рейтинг: 0 / 0
27.02.2003, 10:27
    #32111912
Oracle X-pert
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
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..
...
Рейтинг: 0 / 0
27.02.2003, 15:25
    #32112201
killed
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
>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
...
Рейтинг: 0 / 0
27.02.2003, 16:41
    #32112255
softy
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Нужен совет о Sequences для ключей в Tables
Если честно, лично я про триггеры я вообще молчу, потому-что вовсе их не использую.
В своё время общим мненим коллектива разработчиков было принято решение не использовать триггеры на Oracle, как средство только тормозящее работу.

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


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