Oracle: Как реализуются последовательности?

Чтобы удовлетворить некоторые странные бизнес-требования, мне придется реализовать свои собственные счетчики, похожие на последовательности. Я собираюсь сделать первый разрез очевидным образом, но я хотел бы немного больше понять, как Oracle реализует последовательности. Например, могут ли они использовать защелки вместо замков?

Мне не удалось найти много об этом в Интернете, поэтому приветствуются ссылки на документы, а также понимание вашего личного опыта!

(10 г RAC, если это имеет значение)


person Mark Harrison    schedule 14.08.2009    source источник
comment
Я хотел бы знать странные бизнес-требования, которые означают, что вы не можете просто использовать последовательности...   -  person Nick Pierpoint    schedule 19.08.2009


Ответы (4)


Я не думаю, что Oracle опубликовала внутреннюю работу последовательностей, но Джонатан Льюис написал подробный анализ того, как они работают здесь. Из этого документа:

Поскольку этот механизм является внутренним для Oracle, он очень эффективен и обходит обычное соперничество за блокировку, которое возникает с традиционными кодированными конечными пользователями «таблицами последовательности объекта последовательности: «дайте мне следующий доступный номер» и «напомните мне, что это было еще раз». '; это вызовы nextval и currval соответственно.

Запрос nextval обращается к глобальному кэшу, чтобы получить следующее доступное значение последовательности, и копирует его в локальную память сеанса.

person Tony Andrews    schedule 14.08.2009

Вот хороший набор ответов на вопросы: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:6575961912937

person David Aldridge    schedule 14.08.2009

Вам нужна непрерывная последовательность чисел? Прочтите это: http://asktom.oracle.com/pls/asktom/f?p=100:11:0::::P11_QUESTION_ID:4343369880986

person tuinstoel    schedule 14.08.2009

Я думаю, вам нужно объяснить, почему вам нужно реализовать свою собственную последовательность. Если мы знаем проблему, которую вы пытаетесь решить, мы можем дать вам ответ, чтобы вам не пришлось выполнять свою собственную последовательность.

person Community    schedule 18.08.2009