|
|
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
СУБД Линтер. В качестве поля с id-шками записей использую bigint autoinc . Популярный вопрос: возможно ли тут быстро получить id только что вставленной записи? max(id) не подходит, т.к. выполняется очень долго, и с увеличением кол-ва записей в таблице все дольше и дольше... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 15:15 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Используйте sequence. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.06.2007, 19:12 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Спасибо. А интересно, что будет быстрее, SEQUENCE или своя реализация генератора id: табличка с id и именем таблицы, для которой этот id хранится и процедурка типа get_id(tab_name), которая возвращает инкрементированный id ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 12:22 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
unasСпасибо. А интересно, что будет быстрее, SEQUENCE или своя реализация генератора id: табличка с id и именем таблицы, для которой этот id хранится и процедурка типа get_id(tab_name), которая возвращает инкрементированный id ? а сам то как думаешь ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 12:51 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Немного дополню ответ Павла. Можно и не использовать SEQUENCE: create table test (i bigint autoinc); insert into test values (1111111111111); select cast (last_autoinc as bigint); ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.06.2007, 11:24 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
xuserНемного дополню ответ Павла. Можно и не использовать SEQUENCE: create table test (i bigint autoinc); insert into test values (1111111111111); select cast (last_autoinc as bigint); А из конкурирующих сессий это будет нормально отрабатывать ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 08:06 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)[quot xuser]Немного дополню ответ Павла. Можно и не использовать SEQUENCE: А из конкурирующих сессий это будет нормально отрабатывать ? В рамках сессии (в Линтере это соединение) будет отрабатывать нормально. То есть для каждого из отдельно открытых соединений LAST_AUTOINC будет свой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.06.2007, 20:00 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
xuser Gluk (Kazan)[quot xuser]Немного дополню ответ Павла. Можно и не использовать SEQUENCE: А из конкурирующих сессий это будет нормально отрабатывать ? В рамках сессии (в Линтере это соединение) будет отрабатывать нормально. То есть для каждого из отдельно открытых соединений LAST_AUTOINC будет свой. А в плане производительности ? Значения кэшируются ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 10:15 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan)А в плане производительности ? Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения. Быстрее быть не может :-) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 10:51 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
pavelvp Gluk (Kazan)А в плане производительности ? Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения. Быстрее быть не может :-) Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ??? Или просто загодя кэшируется очередное ??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.06.2007, 11:18 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Gluk (Kazan) pavelvp Gluk (Kazan)А в плане производительности ? Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения. Быстрее быть не может :-) Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ??? Или просто загодя кэшируется очередное ??? Когда идет INSERT в таблицу с AUTOINC-столбцом, для AUTOINC-столбца выбирается очередное значение из описания таблицы и описание таблицы корректируется. Затем выбранное значение копируется в область данных того соединения, которое подало запрос, чтобы последующий LAST_AUTOINC вернул его. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 13:30 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
xuser Gluk (Kazan) pavelvp Gluk (Kazan)А в плане производительности ? Значения кэшируются ? Значение LAST_AUTOINC хранится в области данных соединения. Быстрее быть не может :-) Гмм. не понял. А как тогда разным сессиям раздаются непересекающиеся значения ??? Или просто загодя кэшируется очередное ??? Когда идет INSERT в таблицу с AUTOINC-столбцом, для AUTOINC-столбца выбирается очередное значение из описания таблицы и описание таблицы корректируется. Затем выбранное значение копируется в область данных того соединения, которое подало запрос, чтобы последующий LAST_AUTOINC вернул его. Значит быстрее быть МОЖЕТ. В Oracle (не знаю как в Линтер) sequence можно кэшировать заранее :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 14:59 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Привет, Gluk! Ты пишешь: GlukВ Oracle (не знаю как в Линтер) sequence можно кэшировать заранее :)подробнее, плс, в нескольких словах. довольно интересно. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 15:03 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
в create sequence есть фраза cache N, которая сильно облегчает жизнь при массовой вставке данных к примеру. Разумеется возможные дыры в последовательности сильно разрастаются, но это мало кого волнует ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:07 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Привет, Gluk! Ты пишешь: GlukGK> в create sequence есть фраза cache N, которая сильно облегчает жизнь при массовой вставке данных к примеру. GK> Разумеется возможные дыры в последовательности сильно разрастаются, но это мало кого волнуетинтересно. а кеширование этой N-й последовательности глобальное, или в рамках одной сессии? тестирование скорости вставки кто-нить проводил? интересно сравнить, с кешированием и без него. -- With best regards, Мимопроходящий. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:15 |
|
||
|
Линтер, получить id вставленной записи
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий тестирование скорости вставки кто-нить проводил? интересно сравнить, с кешированием и без него. порой только оно и спасает ;) работает надежно как такое можно реализовать на базе автоинкремента, представляю себе с трудом ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 28.06.2007, 16:59 |
|
||
|
|

start [/forum/topic.php?fid=56&msg=34626789&tid=2016139]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
40ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 224ms |
| total: | 335ms |

| 0 / 0 |
