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

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

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


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

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

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


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