powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакционные генераторы
47 сообщений из 47, показаны все 2 страниц
Транзакционные генераторы
    #38825450
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сабж в тройке это, конечно, круто, но не когда в результате получаешь из gen_id() один и тот же номер в параллельных транзакциях.

Сессия 1:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
SQL> set autoddl off;
SQL> show sequences;
Generator GEN_T_LOG, current value: 107, initial value: 0, increment: 1
SQL> set generator gen_t_log to 107;
SQL> select gen_id(gen_t_log,1) from rdb$database;
Replication of transaction 114 initiated

               GEN_ID
=====================
                  108

SQL>


Сессия 2 после этого:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
SQL> select gen_id(gen_t_log,1) from rdb$database;
Replication of transaction 112 initiated

               GEN_ID
=====================
                  108

SQL>
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38825471
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
при использовании set generator я тебе в любой версии сгенерю одинаковые номера из gen_id :-)

ЗЫ. SET GENERATOR - это теперь DDL, синоним ALTER SEQUENCE. DDL надо коммитить. Иначе ССЗБ.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38825493
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrSET GENERATOR - это теперь DDL, синоним ALTER SEQUENCE. DDL надо коммитить.
Иначе ССЗБ.
Вот теперь мне надо сильно подумать: то ли забить на репликацию изменений генераторов в
откаченных транзакциях вообще, либо придумать какое-то извращение для случаев, когда
некоторые чудики полученные в таких транзакциях значения потом используют.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38827256
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovdimitrSET GENERATOR - это теперь DDL, синоним ALTER SEQUENCE. DDL надо коммитить.
Иначе ССЗБ.
Вот теперь мне надо сильно подумать: то ли забить на репликацию изменений генераторов в
откаченных транзакциях вообще, либо придумать какое-то извращение для случаев, когда
некоторые чудики полученные в таких транзакциях значения потом используют.


Теперь придётся подумать и тем кто использовал генераторы в "неестественных" для них целях.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38827258
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NikolayV81...
надеюсь в следующих версиях не будет запрета на изменение текущего значения, как "у других".
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38828040
Fr0sT-Brutal
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Использовали, потому что по-другому никак... Я как крит. секцию применяю в паре мест (вычитал вроде бы на ibase, кстати)
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852297
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry SibiryakovСабж в тройке это, конечно, крутоЧто-то прошляпил я эту тему. Интересное дело, кажется.
В где найти пример их использования ?
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852365
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

перечитай топик.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852372
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvперечитай топик.Перечитал. У мну не так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
Database:  localhost/3333:/var/db/fb30/tmp.fdb
SQL> show sequ;
There are no generators in this database
SQL> create sequence ggg;
SQL> show sequ;
Generator GGG, current value: 0, initial value: 0, increment: 1
SQL> set generator ggg to 107;
SQL> select gen_id(ggg,1) from rdb$database;

               GEN_ID
=====================
                  108

Что такое фраза "Replication of transaction 114 initiated", которая лезет в стартовом посте сразу после select "gen_id(gen_t_log,1) from rdb$database;" ?
Что такое вообще "транзакционные генераторы" и в где про них почитать ?
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852392
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидЧто такое вообще "транзакционные генераторы" и в где про них почитать ?Это очередной бред Сибирякова, который наткнулся на побочный эффект в 3-ке и теперь машет им направо и налево...
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852506
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидУ мну не так:
autoddl отключи, select удвой и rollback после первого добавь.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852513
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вах.... хренасе... :-)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
session #1
Database:  localhost/3333:/var/db/fb30/tmp.fdb
SQL> set autoddl off;
SQL> show sequences;
Generator GGG, current value: 108, initial value: 0, increment: 1
SQL> set generator ggg to 110;
SQL> select gen_id(ggg,1) from rdb$database;

               GEN_ID
=====================
                  111

SQL> select gen_id(ggg,1) from rdb$database;

               GEN_ID
=====================
                  112

session #2
Database:  localhost/3333:/var/db/fb30/tmp.fdb
SQL> select gen_id(ggg,1) from rdb$database;

               GEN_ID
=====================
                   109 

session #1
SQL> commit;

session #2
SQL> select gen_id(ggg,1) from rdb$database;

               GEN_ID
=====================
                  113
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852558
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

ахтунг?
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852567
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdv,

дык теперь уж и не знаю... :-)
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852619
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

нет уж, ты сначала определись! :-)
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852630
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrнет уж, ты сначала определись ! :-)Так тут сплошное уравнение неопределённости, возможно даже - по Гейзенбергу!
А если без шуток, то:
1) оч хотелось бы внутри транзакции иметь некий счетчик, известный только ей, стартующий при её старте, с нуля, и ведущий себя как генератор; rdb$get/set_context'ы - очевидное решение, то тормознутое на cast'ах. Проверено. И даже в личку кое-кому было отправлено :-)
2) касательно примера выше - непонятно, ЗАЧЕМ так сделано. Почему set autoddl off вдруг так "завлиял". Ведь я могу приконнектиться к базе isql'ем, причём только с правом обращения к к-л генератору, ввести далее то, что показано - и что будут видеть остальные коннекты ? особливо весело будет, когда я коммит сделаю...
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852635
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидА если без шуток, то:
1) Тогда голосуй за CORE-4001.
2) set generator это теперь alter sequence, DDL со всеми вытекающими.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852637
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov,

насколько я понял, конкретный коннект после set generator ... до commit будет видеть только "свои" значения генератора? А все остальные коннекты будут видеть нормальные значения? Это ради уменьшения writes в страницы генераторов?
С другой стороны, set generator всегда был DDL, и его в PSQL использовать было нельзя. С какой-то версии вроде можно. Но вопрос - зачем?
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852638
Dimitry Sibiryakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvDimitry Sibiryakov
Это тебе Влада надо спрашивать, я тут только по части бреда...
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852641
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dimitry Sibiryakov> 2) set generator это теперь DDL

Всегда был.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852643
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
kdvset generator всегда был DDL, и его в PSQL использовать было нельзя. С какой-то версии вроде можно.
1) SET GENERATOR никогда не был DDL . Он препарировался отдельным типом стеймента, выполнялся мгновенно (а не откладывался до коммита) и его нельзя было откатить. Почувствуйте, блин, разницу.

2) SET GENERATOR действительно не разрешался в PSQL, но это не делает его DDL. Только в Яффиле это ограничение убрали. А FB это можно обойти через EXECUTE STATEMENT.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852648
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоиднепонятно, ЗАЧЕМ так сделано. Почему set autoddl off вдруг так "завлиял".
ты этот топик весь читал?

1) SET GENERATOR теперь = ALTER SEQUENCE = DDL, ибо стандарт не допускает произвольного изменения генераторов через DML. Сильно упертые могут продолжать выкручиваться с нестандартными инкрементами в GEN_ID.

2) Незакоммиченный DDL видеть никто не должен. Так что результат SET TRANSACTION до коммита виден только текущей транзакции.

3) В результате впервые в ФБ появляется транзакционный DDL - можно в одной и той же транзакции создать генератор и использовать его, а потом либо грохнуть либо закоммитить.

4) Возникает вопрос - какой счетчик должен увеличивать GEN_ID, выполненный в той же транзакции, что и незакоммиченный SET GENERATOR? Если "глобальный" (закоммиченный, видимый всем), то при коммите он сбросится в значение, установленное через SET GENERATOR - при неудачном раскладе мы потеряем и свои собственные изменения, и изменения других транзакций. Если "локальный" (видимый только текущей транзакции), то при коммите при неудачном раскладе мы потеряем только чужие изменения.

5) Явно изменять значения генераторов "на лету" при активной работе с базой - ахтунг. Делать это еще и в длинных транзакциях с GEN_ID внутри - дважды ахтунг. Кто на это нарвется в продакшене - ССЗБ.

Это мое мнение. Можете попробовать меня переубедить :-)
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852653
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно, конечно, попробовать при GEN_ID для незакоммиченного SET GENERATOR в качестве текущего значения брать MAX(генератор в базе, генератор в кеше) и вычислять это под локом для страницы генератора. Тогда наверное конфликтов не будет. Хотя "транзакционность" слегка пойдет лесом - SET GENERATOR G TO 123; SELECT GEN_ID(G, 0) FROM RDB$DATABASE; - сможет вернуть несогласованные данные.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852654
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr1) SET GENERATOR никогда не был DDL. Он препарировался отдельным типом стеймента,
выполнялся мгновенно (а не откладывался до коммита) и его нельзя было откатить.

2) SET GENERATOR действительно не разрешался в PSQL, но это не делает его DDL.
Порнография какая-то, ИМХО. Классическое "а здесь рыбу заворачивали".
В доке про это тоже ни слова, кстати, там он идёт как DDL де-факто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852658
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

всегда считал что SET GENERATOR есть DDL, а он оказывается только в трёшке стал таковым. Что в принципе верно.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852663
dimitr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrMAX(генератор в базе, генератор в кеше)
особенно сильно этому обрадуются те извращенцы, кто юзает GEN_ID с отрицательным инкрементом...
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852670
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr2) Незакоммиченный DDL видеть никто не должен.Согласен!

Посему, если уж так, то любое обращение "чужой" тр-ции к незакоммиченному изменённому генератору должно либо ждать коммита (и работать де-факто с закомиченным состоянием), либо выдавать ошибку доступа.
Вот такое вот моё мнение.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852678
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitrСильно упертые могут продолжать выкручиваться с нестандартными инкрементами в GEN_ID.Конечно могут. И будут, ибо страница генераторов - одно из узких мест. Если сделать внутри цикла раздачу ИДшников из заранее полученного "пула" (через вызов gen_id( g, :N ), где N >> 1), то будет как в рекламе: "почувствуйте разницу".

dimitr3) В результате впервые в ФБ появляется транзакционный DDL - можно в одной и той же транзакции создать генератор и использовать его, а потом либо грохнуть либо закоммитить.Это всё прекрасно, только как в двух транзакциях создать генератор-"времянку" с одинаковым именем (просто чтобы посчитать им чего-то там, и грохнуть затем) ?
Не получится это. А раз так, то придется делать какой-то изврат типа создания генератора с именем, в которое будет включен номер текущей транзакции. А дальше - выполнять gen_id( имя, 1 ), но ведь его тогда уже и не выполнить в "явном" виде, только через ES.

Гемор какой-то! Поэтому я проголосовал за CORE-4001. Нужен какой-то "локальный счетчик", видимый только в PSQL, никаким боком не отражающийся в метаданных. А еще лучше - структуры такого типа, но это уже фантазии, я понимаю :-)

dimitrЕсли "локальный" (видимый только текущей транзакции), то при коммите при неудачном раскладе мы потеряем только чужие изменения.Что-то непонятно, про какие "чужие" изменения тут речь. Ведь никто не видит мой новосозданный генератор, пока я не ввёл commit.

dimitr5) Явно изменять значения генераторов "на лету" при активной работе с базой - ахтунг. Делать это еще и в длинных транзакциях с GEN_ID внутри - дважды ахтунг. Кто на это нарвется в продакшене - ССЗБ.Нельзя менять в сторону уменьшения. Что плохого в увеличении на шаг N >> 1 для получения "пула" ИДшников - не ведаю. Я этим хаком получил только плюсы, и значительные.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852779
Ivan_Pisarevsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
hvladосему, если уж так, то любое обращение "чужой" тр-ции к незакоммиченному изменённому генераторуКак по мне так давать отлуп ( no wait), или подождать (wait) и потом или дать отлуп если коммит(роллбак) так и не прошел, если прошел, то отдать валидное значение клиенту и нехай радуется.

ТаблоидНужен какой-то "локальный счетчик", видимый только в PSQLОпять таки мое мнение, это должен быть не генератор, ну или типа GTT генератор.

ТаблоидЧто плохого в увеличении на шаг N >> 1 для получения "пула" ИДшников - не ведаю. Я этим хаком получил только плюсы, и значительные.Этому хаку сто лет в обед, штатно в ФИБах присутствует со времен царя Гороха.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38852783
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ТаблоидНельзя менять в сторону уменьшения. Что плохого в увеличении на шаг N >> 1 для получения "пула" ИДшников - не ведаю. Я этим хаком получил только плюсы, и значительные.

ага. Попробуй вот этот трюк сделать хотя бы 2 раза

Код: sql
1.
2.
3.
SELECT
  GEN_ID(MYGEN, 9223372036854775806) AS n
FROM RDB$DATABASE
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853043
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dimitr4) Возникает вопрос - какой счетчик должен увеличивать GEN_ID, выполненный в той же транзакции, что и незакоммиченный SET GENERATOR? Если "глобальный" (закоммиченный, видимый всем), то при коммите он сбросится в значение, установленное через SET GENERATOR - при неудачном раскладе мы потеряем и свои собственные изменения, и изменения других транзакций. Если "локальный" (видимый только текущей транзакции), то при коммите при неудачном раскладе мы потеряем только чужие изменения.

Имхо генераторы - это типовой разделяемый глобальный ресурс с locked exclusive доступом.

то есть на псевдокоде GEN_ID - это

Generator.Lock()
try{
Generator.Inc( OptionalDelta )
return Generator.Current
}finally{ Generator.UnLock() }

Соответственно SET GENERATOR - Это установка еще одного lock завершения транзакции

Generator.Lock()
try{
Generator.Assign( NewValue )

Generator.Lock()
try{
Generator.Inc( OptionalDelta )
return Generator.Current
}finally{ Generator.UnLock() }

Generator.Lock()
try{
Generator.Inc( OptionalDelta )
return Generator.Current
}finally{ Generator.UnLock() }

} catch { Generator.Assign ( Pre-transaction value) }
}finally{ Generator.UnLock() } // commit


Соответсвенно, другие транзакции ВООБЩЕ не должны иметь доступа к генератору до решения его судьбы (снятия лока в результате commit/rollback)

Соответственно внутри транзакции ВОЗМОЖНО не должно быть разрешено чтение ( GEN_ID, SELECT NEXT) после SET GENERATOR (он уже был залочен).
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853053
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кроме того мне непонятно что делать с генераторами, изменяемыми в середине длинной транзакции

Trans1.Start // Gen=1

Gen_ID // Gen=2
...
Gen_ID // Gen=3
...
Gen_ID // Gen=4
...

SET GENERATOR 10 // Gen = 10
Gen_ID // Gen=11
...
Gen_ID // Gen=12
...
Gen_ID // Gen=13
...

Trans1.Rollback

И вот куда теперь откатывать генератор ? на 1 или на 10 ?

На 1 ?
А если пока еще генератор не был "залочен" через DDL параллельные транзакции им тоже пользовались?

На 10?
А если внутри транзакции несколько SET GENERATOR ?
То есть транзакция откатывается лишь частично ?

IMHO это было правильно, что у SET_GENERATOR был отдельный тип команды, генераторы - вполне себе особый вид сущностей.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853057
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис,

Кстати, хорший вопрос. Что будет делать GEN_ID(xxx), GEN_ID(xxx, +1) и SELECT NEXT FROM xxx на верхней границе? Свернётся или (лучше) выдаст ошибку?
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853068
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис
Код: sql
1.
SELECT  GEN_ID(MYGEN, 9223372036854775806) AS n FROM RDB$DATABASE

у мну пока нет циклов с таким числом итераций... не дорос еще как бэ...
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853069
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch,

проверь. У меня в минус просто ушёл
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853074
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

не это про то что "Нельзя менять в сторону уменьшения." Как видишь в сторону увеличения тоже траблы могут быть
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853092
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денисв сторону увеличения тоже траблы могут бытьЭто "слишком смелое" увеличение. Примерно как то, которое об столб ломается, когда "с дуру"
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853093
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Симонов Денис> не это про то что "Нельзя менять в сторону уменьшения."
Симонов Денис> Как видишь в сторону увеличения тоже траблы могут быть

Шо, увлечение синтетическими поисками крайностей и пр. т.п. и тебя затронуло?
Это что, заразно и передаётся воздушно-электронным путём?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853095
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Буй, не столб.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853151
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

проблема с "синтетическими поисами крайностей", что про это нафиг забывают в иотге ,а потом лет через 15-20-30 оппа, ошибка 2000 или что-то вроде
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853156
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
то есть да, сейчас в 99,99% случаев заворачивание счетчика не актуаьлно.

Но если когда оно станет актуально, про него могут просто не вспомнить
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853168
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

это всего лишь ответ на то что увеличение генератора всегда безопасно. Не всегда. Пусть даже тест и синтетический
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853169
Таблоид
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochНо если когда оно станет актуально, про него могут просто не вспомнитьПереход счетчика через 2^63-1 придется долго ждать, если двигаться к нему с шагом = 1. Даже если будут системы со 100 млн транзакциями в секунду...
Код: plaintext
1.
2.
3.
4.
5.
SQL> select power(2,63)/100000000/365.25/24/60/60 from rdb$database;

                 DIVIDE
=======================
      2922.710230453132
PS. "Через 30 лет другие коммунисты ответят перед партией!" (С) к/ф "Зеркало для героя", 1987.
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853215
Arioch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

но один из способов разносить данные по "филиалам" как раз был через раздачу крупных пулов номеров Primary Key.

Впрочем, согласен, жить с этим уже не нам
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853242
Фотография Симонов Денис
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Таблоид,

пример был приведён лишь в качестве демонстрации, что злоумышленник может и без уменьшения значения генератора напортачить
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853250
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Arioch> а потом лет через 15-20-30 оппа, ошибка 2000 или что-то вроде

И? Ну будет не 2000, а 3000. Нет, лучше 5000.

Голову лечить надо просто.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Транзакционные генераторы
    #38853642
NikolayV81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
AriochТаблоид,

но один из способов разносить данные по "филиалам" как раз был через раздачу крупных пулов номеров Primary Key.

Впрочем, согласен, жить с этим уже не нам

Проблема скорее в том что во многих системах это число сильно меньше 2:63/"кол-во филиалов" ;)
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Транзакционные генераторы
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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