powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Линтер, получить id вставленной записи
16 сообщений из 16, страница 1 из 1
Линтер, получить id вставленной записи
    #34611175
unas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СУБД Линтер.
В качестве поля с id-шками записей использую bigint autoinc .
Популярный вопрос: возможно ли тут быстро получить id только что вставленной записи? max(id) не подходит, т.к. выполняется очень долго, и с увеличением кол-ва записей в таблице все дольше и дольше...
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34612095
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Используйте sequence.
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34613271
unas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо.
А интересно, что будет быстрее, SEQUENCE или своя реализация генератора id: табличка с id и именем таблицы, для которой этот id хранится и процедурка типа get_id(tab_name), которая возвращает инкрементированный id ?
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34613406
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
unasСпасибо.
А интересно, что будет быстрее, SEQUENCE или своя реализация генератора id: табличка с id и именем таблицы, для которой этот id хранится и процедурка типа get_id(tab_name), которая возвращает инкрементированный id ?

а сам то как думаешь ?
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34615710
xuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Немного дополню ответ Павла. Можно и не использовать SEQUENCE:

create table test (i bigint autoinc);
insert into test values (1111111111111);
select cast (last_autoinc as bigint);
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34616311
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xuserНемного дополню ответ Павла. Можно и не использовать SEQUENCE:

create table test (i bigint autoinc);
insert into test values (1111111111111);
select cast (last_autoinc as bigint);

А из конкурирующих сессий это будет нормально отрабатывать ?
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34618643
xuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan)[quot xuser]Немного дополню ответ Павла. Можно и не использовать SEQUENCE:

А из конкурирующих сессий это будет нормально отрабатывать ?

В рамках сессии (в Линтере это соединение) будет отрабатывать нормально.
То есть для каждого из отдельно открытых соединений LAST_AUTOINC будет свой.
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34619189
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xuser Gluk (Kazan)[quot xuser]Немного дополню ответ Павла. Можно и не использовать SEQUENCE:

А из конкурирующих сессий это будет нормально отрабатывать ?

В рамках сессии (в Линтере это соединение) будет отрабатывать нормально.
То есть для каждого из отдельно открытых соединений LAST_AUTOINC будет свой.

А в плане производительности ?
Значения кэшируются ?
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34619298
pavelvp
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluk (Kazan)А в плане производительности ?
Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения.
Быстрее быть не может :-)
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34619418
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
pavelvp Gluk (Kazan)А в плане производительности ?
Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения.
Быстрее быть не может :-)

Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ???
Или просто загодя кэшируется очередное ???
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34625976
xuser
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluk (Kazan) pavelvp Gluk (Kazan)А в плане производительности ?
Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения.
Быстрее быть не может :-)

Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ???
Или просто загодя кэшируется очередное ???

Когда идет INSERT в таблицу с AUTOINC-столбцом, для AUTOINC-столбца выбирается
очередное значение из описания таблицы и описание таблицы корректируется.
Затем выбранное значение копируется в область данных того соединения, которое
подало запрос, чтобы последующий LAST_AUTOINC вернул его.
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34626322
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
xuser Gluk (Kazan) pavelvp Gluk (Kazan)А в плане производительности ?
Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения.
Быстрее быть не может :-)

Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ???
Или просто загодя кэшируется очередное ???

Когда идет INSERT в таблицу с AUTOINC-столбцом, для AUTOINC-столбца выбирается
очередное значение из описания таблицы и описание таблицы корректируется.
Затем выбранное значение копируется в область данных того соединения, которое
подало запрос, чтобы последующий LAST_AUTOINC вернул его.

Значит быстрее быть МОЖЕТ. В Oracle (не знаю как в Линтер) sequence можно кэшировать заранее :)
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34626340
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Gluk!
Ты пишешь:

GlukВ Oracle (не знаю как в Линтер) sequence можно кэшировать заранее :)подробнее, плс, в нескольких словах.
довольно интересно.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34626575
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
в create sequence есть фраза cache N, которая сильно облегчает жизнь при массовой вставке данных к примеру. Разумеется возможные дыры в последовательности сильно разрастаются, но это мало кого волнует
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34626602
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет, Gluk!
Ты пишешь:

GlukGK> в create sequence есть фраза cache N, которая сильно облегчает жизнь при массовой вставке данных к примеру.
GK> Разумеется возможные дыры в последовательности сильно разрастаются, но это мало кого волнуетинтересно.
а кеширование этой N-й последовательности
глобальное, или в рамках одной сессии?
тестирование скорости вставки кто-нить проводил?
интересно сравнить, с кешированием и без него.

--
With best regards, Мимопроходящий.

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Линтер, получить id вставленной записи
    #34626789
Фотография Gluk (Kazan)
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мимопроходящий
тестирование скорости вставки кто-нить проводил?
интересно сравнить, с кешированием и без него.


порой только оно и спасает ;)
работает надежно

как такое можно реализовать на базе автоинкремента, представляю себе с трудом
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / Другие СУБД [игнор отключен] [закрыт для гостей] / Линтер, получить id вставленной записи
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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