powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 2.5 embedded: isolation level
7 сообщений из 7, страница 1 из 1
Firebird 2.5 embedded: isolation level
    #39471124
зеленый админ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет. Запустил два инстанса аппликашки для 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 ожидается подчитывание закоммиченных данных, не так ли?
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471147
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зеленый админВедь в 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 без проблем.
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471151
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зеленый админЗапустил два инстанса аппликашки для Firebird 2.5 embedded
кстати, я не понял, зачем надо было мучиться с двумя "аппликашками" на Embedded, если то же самое можно было без программирования выполнить из двух ISQL, IBExpert и т.д. на обычном сервере ФБ, не embedded.
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471154
hvlad
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зеленый админ3) Commit или rollback первой => вторая вывалилась с сообщением:Внимательнее смотри, по роллбеку первой вторая спокойно сделает свою работу
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471377
зеленый админ
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо за ссылки. Почитал, многое прояснилось. Осталось понять, какой тогда смысл в '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.
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471415
Мимопроходящий
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
13.06.2017 19:01, зеленый админ пишет:

> ZeosLib

ну и паркуа нахуа?
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Firebird 2.5 embedded: isolation level
    #39471796
Фотография kdv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зеленый админ У них незакомиченными данными считаются даже те, что прошли коммит во время выполнения стейтмента в read commited.
что??? похоже, ты прочитал, но ничего не понял.
Wait - это отложенное сообщение об ошибке, или ожидание окончания rollback-ом конкурирующей транзакции. Сам конфликт в ФБ определяется во время его возникновения, а не по коммиту.
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Firebird 2.5 embedded: isolation level
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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