powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли быть уверенным в том, что sequence всегда возрастает?
11 сообщений из 11, страница 1 из 1
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095866
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Собственно вопрос связан с валидацией/инвалидацией кеша.
У меня есть скрипт-демон, который в фоновом режиме работает с базой данных, обновляя определенные записи.
Для того, чтобы сократить обращения к БД, он при запуске считывает значение некоторых таблиц-справочников в кеш и при работе использует кеш. И нужно определить, когда кеш устарел и его нужно обновить.
В таблицах-справочниках в качестве PK используется числовое поле, автоматически заполняемое в триггере на основе sequence.
Я планирую при считывании кеша запоминать последнее (максимальное) значение PK, а при проверке использовать что-то вроде select 1 from dual where exists (select * from table1 where item_id > <last_id>)
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095874
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.,

все имхо
Нюансы
1) RAC
2) последовательность не циклическая
3) палится по селекту, данные по коммиту

....
stax
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095894
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. RAC нет, отдельный сервер Oracle 10g.
2. Само собой, cycle=no, order=yes.
3. Не совсем понял, можно пояснить подробнее?
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095923
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.
...
Я планирую при считывании кеша запоминать последнее (максимальное) значение PK, а при проверке использовать что-то вроде select 1 from dual where exists (select * from table1 where item_id > <last_id>)

Нет, в общем многопользовательском случае нельзя, даже если он (сиквенс) NOCACHE.
Порядок использования захваченных сеансами значений сиквенса непредсказуем, и, по времени, после большего значения, использованного в одном сеансе, может появиться запись с меньшим значением сиквенса от другого сеанса.

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

Наколенный result cache можно и изобразить, при особой надобности, для случая коротких справочников, (скажем, в сотню-другую значений, до малых тысяч), записывая использованные значения в биты raw-поля специальной кеш-таблицы, например.
Для высоких нагрузок это станет узким местом скорее рано, чем поздно.
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095932
booby
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
...

Наколенный result cache можно и изобразить, при особой надобности, для случая коротких справочников, (скажем, в сотню-другую значений, до малых тысяч), записывая использованные значения в биты raw-поля специальной кеш-таблицы, например.
Для высоких нагрузок это станет узким местом скорее рано, чем поздно.

лучше - обновляя "номер версии" кеша значением специальной выделенной для этого последовательности
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095938
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Понятно, спасибо за разъяснения.

А есть ли в Oracle таймстамп последнего любого изменения таблицы (или другого объекта базы)?
Что-то вроде атрибута last_ddl_time, точнее last_dml_time (если бы такой атрибут существовал).
Мне нужно какое-то условие для инвалидации кеша, причем нечастое ложное срабатывание вполне допускается.
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095944
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
[quot Alibek B.
Мне нужно какое-то условие для инвалидации кеша, причем нечастое ложное
срабатывание вполне допускается.
[/quot]
https://docs.oracle.com/cd/B19306_01/B14251_01/adfns_dcn.htm
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095945
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
booby
лучше - обновляя "номер версии" кеша значением специальной выделенной для этого последовательности

А кто будет обновлять номер версии кеша?
Скрипт-демон работает с базой данных сторонней информационной системы, изменить логику которой нет возможности.
Конечно можно просто периодически считывать с БД справочники, сравнивать с кешем и обновлять кеш, но хотелось бы уменьшить подобный трафик.
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095947
Alibek B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник

Как все сложно.
Спасибо, похоже именно это и нужно.
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095951
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.Как все сложно.

Это гораздо проще, чем там описано. Тебе же не нужен PL/SQL обработчик и прочее
Advanced Queue, достаточно обычной подписки на клиенте, а это вызов пары функций
OCI.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Можно ли быть уверенным в том, что sequence всегда возрастает?
    #40095983
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Alibek B.

3. Не совсем понял, можно пояснить подробнее?


13:00 сессия 1 select nextval =100
13:01 сессия 2 select nextval =101
13:02 сессия 2 select commit
13:03 сессия 1 select commit

в результате 101 будет закомичен раньше 100


"Для того, чтобы сократить обращения к БД" мож и не надо кеш,
выиграете Вы 0.0001секунду, а оно того стоит


....
stax
...
Рейтинг: 0 / 0
11 сообщений из 11, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Можно ли быть уверенным в том, что sequence всегда возрастает?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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