Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
Привет. Запустил два инстанса аппликашки для Firebird 2.5 embedded со следующими параметрами транзакции: ZeosLibisc\_tpb\_version3 isc_\tpb\_write isc\_tpb\_wait isc\_tpb\_read_committed isc\_tpb\_no_rec_version Прокрутил следующий юз кейс: 1) 'UPDATE TEST SET id = ?' из первой транзакции 2) 'UPDATE TEST SET id = ?' из второй транзакции (=> зависла, поскольку _wait, ожидаемо) 3) Commit или rollback первой => вторая вывалилась с сообщением: автор--------------------------- Project1 --------------------------- SQL Error: deadlock update conflicts with concurrent update concurrent transaction number is 3115669. Error Code: -913. deadlock The SQL: UPDATE TEST SET id = ?; --------------------------- OK --------------------------- Почему так произошло? Ведь в read commited ожидается подчитывание закоммиченных данных, не так ли? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 19:01 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
зеленый админВедь в read commited ожидается подчитывание закоммиченных данных 1. ты указал no_rec_version, которая в принципе НЕ показывает незакомиченные данные 2. при двух конкурирующих update второй ВСЕГДА даст deadlock - потому что производится попытка обновить некоммиченную версию. Update сам "перечитывать" данные при конфликте не будет. 3. читать http://www.ibase.ru/mga/ http://www.ibase.ru/ibtrans/ и если уж приперло редко используемый no_rec_version - http://www.ibase.ru/files/articles/transactions/norecver.htm Вот если бы второй update был после коммита первой транзакции - тогда в read_committed без проблем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 19:29 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
зеленый админЗапустил два инстанса аппликашки для Firebird 2.5 embedded кстати, я не понял, зачем надо было мучиться с двумя "аппликашками" на Embedded, если то же самое можно было без программирования выполнить из двух ISQL, IBExpert и т.д. на обычном сервере ФБ, не embedded. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 19:37 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
зеленый админ3) Commit или rollback первой => вторая вывалилась с сообщением:Внимательнее смотри, по роллбеку первой вторая спокойно сделает свою работу ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2017, 19:43 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
Спасибо за ссылки. Почитал, многое прояснилось. Осталось понять, какой тогда смысл в 'wait', если после него не происходит перечитывание? Фраза из документации http://www.ibase.ru/ibtrans/ Как выяснилось (в 2010) году, многие разработчики драйверов (Firebird ODBC, Firebird .Net driver (DNET-337) и т. д.) почему-то считают, что для read_committed нормальным является режим no record_version, вызывающий блокировки по чтению non-committed данных. Это является неестественным, т. к. InterBase и Firebird ни при каком уровне изолированности не допускают чтения non-committed данных. просто убила. У них незакомиченными данными считаются даже те, что прошли коммит во время выполнения стейтмента в read commited. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 11:14 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
13.06.2017 19:01, зеленый админ пишет: > ZeosLib ну и паркуа нахуа? Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 11:53 |
|
||
|
Firebird 2.5 embedded: isolation level
|
|||
|---|---|---|---|
|
#18+
зеленый админ У них незакомиченными данными считаются даже те, что прошли коммит во время выполнения стейтмента в read commited. что??? похоже, ты прочитал, но ничего не понял. Wait - это отложенное сообщение об ошибке, или ожидание окончания rollback-ом конкурирующей транзакции. Сам конфликт в ФБ определяется во время его возникновения, а не по коммиту. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.06.2017, 22:47 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=39471377&tid=1561534]: |
0ms |
get settings: |
11ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
55ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
40ms |
get tp. blocked users: |
1ms |
| others: | 275ms |
| total: | 414ms |

| 0 / 0 |
