Oracle: как реализованы последовательности?

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

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

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

4 ответа

Решение

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

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

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

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

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

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

Другие вопросы по тегам