|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_ hvlad Она атомарна. Будет сообщение об ошибке. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 17:24 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
hvlad Будет сообщение об ошибке. Давай детальнее. Таблица Код: sql 1. 2. 3. 4. 5. 6. 7.
И из двух параллельных транзакций с параметрами rec_version, read_committed, wait выполняется запрос Код: sql 1. 2. 3.
Если операция атомарна, то откуда возьмется ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 17:35 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_ Если операция атомарна И что такое изолированность ? Каким боком вторая тр-ция узнает о том, что первая что-то вставила, если ей нельзя видеть незакомиченное ? Может уже изучить азы ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 17:40 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
LangRef 3.0Столбцы идентификации (автоинкремент) Столбцы идентификации могут быть определены с помощью предложения GENERATED BY DEFAULT AS IDENTITY. Столбец идентификации представляет собой столбец, связанный с внутренним генератором последовательностей.Ключевое я подчеркнул. Генератор - вне транзакций и обращение к нему выстраивает (в) очередь. Следовательно, если не задавать значение руками (а зачем бы, в нормальной ситуации), то две любые вставки гарантированно получат два разных значения для поля с автоинкрементом. На атомарность и изоляцию это всё не влияет. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 17:48 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
hvlad Что такое атомарность, по твоему ? hvlad Каким боком вторая тр-ция узнает о том, что первая что-то вставила, если ей нельзя видеть незакомиченное ? Сейчас провел эксперимент. 1. Стартуем транзакцию 2. Выполняем Код: sql 1. 2. 3.
3. получаем 1 record(s) was(were) inserted into MYTABLE4. Стартуем вторую транзакцию 5. Выполняем Код: sql 1. 2. 3.
получаем Invalid insert or update value(s): object columns are constrained - no 2 table rows can have duplicate column values. violation of PRIMARY or UNIQUE KEY constraint "UNQ_MYTABLE_VAL" on table "MYTABLE". Problematic key value is ("VAL" = 1).Т.е. изолированности транзакции хватает на то, чтобы не найти запись при поиске, но найти при попытке вставить и выкинуть ошибку дубликата. Т.е. тут вопрос даже не в атомарности. Т.к. сейчас никакого race condition нет. Есть обычный конкурентный допуск ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 18:09 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_, Влад сказал что при отсутствии ограничения уникальности, отсутствие дубликатов таким оператором не гарантируется. У тебя оно есть о чём и говорит ошибка. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 18:37 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
Симонов Денис Влад сказал что при отсутствии ограничения уникальности, отсутствие дубликатов таким оператором не гарантируется. Симонов Денис У тебя оно есть о чём и говорит ошибка. _Vasilisk_ изолированности транзакции хватает на то, чтобы не найти запись при поиске, но найти при попытке вставить и выкинуть ошибку дубликата. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 18:43 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_, транзакции изолированы друг от друга. Ну не может вторая транзакция увидеть запись, которая вставила первая, но не подтвердила вставку. Что тут удивительного? Проверка ограничения уникальности производится вне контекста транзакции, поэтому ты получаешь ошибку. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 18:53 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_ hvladЧто такое атомарность, по твоему ? Нет никакого "момента выполнения конкретного оператора". Вообще всё не так. Срочно читать определение ACID. _Vasilisk_ Сейчас провел эксперимент. 1. Стартуем транзакцию 2. Выполняем ... 4. Стартуем вторую транзакцию 5. Выполняем Не думал о том, что 2 и 5 в жизни могут выполняться "одновременно", а не после того, как ты нажмёшь enter ? ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 19:05 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
hvlad Не думал о том, что 2 и 5 в жизни могут выполняться "одновременно", а не после того, как ты нажмёшь enter ? Симонов Денис Проверка ограничения уникальности производится вне контекста транзакции ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 19:18 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_ Симонов Денис Проверка ограничения уникальности производится вне контекста транзакции Вообще-то ответу больше лет, чем моему опыту работы с IB-FB. И не только по факту реализации, но и в обсуждениях на всякоразных ресурсах. Почему снова и снова это становится откровением даже для вовсе не неофитов - для меня загадка. Был случАй, когда мне пришлось это объяснять аж Хелен ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 19:59 |
|
Найти запись или вставить
|
|||
---|---|---|---|
#18+
_Vasilisk_, последний раз говорю - изучай основы. Без них - никуда. Я могу расжевать тебе этот конкретный случай, но не буду. Ибо это тебя ничему не научит. Появится понимание основ, появятся нетривиальные вопросы - приходи, поговорим. ... |
|||
:
Нравится:
Не нравится:
|
|||
13.03.2020, 20:00 |
|
|
start [/forum/topic.php?fid=40&gotonew=1&tid=1560410]: |
0ms |
get settings: |
9ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
146ms |
get topic data: |
11ms |
get first new msg: |
8ms |
get forum data: |
3ms |
get page messages: |
56ms |
get tp. blocked users: |
1ms |
others: | 12ms |
total: | 264ms |
0 / 0 |