|
|
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Окружение: Delphi 10.4.1 Firebird 3.0.7 FireDAC (TFDConnection, TFDTransaction, TFDQuery) Основные настройки компонентов для доступа к базе данных: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. Вызываю хранимку, для определенных данных в самой хранимке генерируется исключение, на клиенте обрабатываю исключение, всё хорошо. Но при повторном запросе к этой хранимке возникает deadlock как будто предыдущая транзакция еще активна, не произошел rollback Код: pascal 1. 2. 3. Сам обработчик Delphi: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Просьба подсказать как победить deadlock ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 15:37 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
scorpion235Просьба подсказать как победить deadlock Во-первых, это не дедлок, а конфликт обновлений. Во-вторых, включить аудит и смотреть когда и как реально транзакции заканчиваются. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 15:39 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
09.03.2021 15:37, scorpion235 пишет: > Просьба подсказать как победить deadlock 1. это не дедлок. это конфликт при обновлении. У Isolation = xiReadCommitted есть два режима: RecordVersion и NoRecordVersion. какой выставлен у тебя? 2. смотри виновника в MON$TRANSACTIONS + MON$ATTACHMENTS Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 15:54 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий У Isolation = xiReadCommitted есть два режима: RecordVersion и NoRecordVersion. какой выставлен у тебя? Не вижу таких режимов. Где их можно выставить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 19:04 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Немного не в тему, но алгоритм управления транзакцией должен быть таким Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 19:26 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий У Isolation = xiReadCommitted есть два режима: RecordVersion и NoRecordVersion. FireDAC сам ничего не выставляет, то есть по умолчанию. Далее, можно положить в TxOptions.Params - rec_version или no_rec_version. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 21:44 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
_Vasilisk_, хороший стиль кодирования ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 22:38 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev, Перед стартом новой sql-операции помогла дополнительная проверка и ошибка ушла: Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 23:50 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
scorpion235, почему Rollback? Тебе не нужно то, что предыдущий запрос выполнил? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.03.2021, 23:58 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
scorpion235 помогла дополнительная проверка Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. И никаких проверок и зависимостей от наличия ошибок ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 11:24 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
10.03.2021 11:24, _Vasilisk_ пишет: > И никаких проверок и зависимостей от наличия ошибок а raise то нафига? не, конечно я понимаю что ты написал ему шаблон. но он же будет теперь везде его пихать, считая что так надо делать всегда. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 11:42 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Dmitry Arefiev FireDAC сам ничего не выставляет, то есть по умолчанию. всё нужно задавать явным способом. API Guide Isolation level describes the view of the database given a transaction as it relates to actions performed by other simultaneously occurring transactions. Valid isolation levels are:
API Guide isc_tpb_no_rec_version - the default refinement , specifies that a transaction can only read the latest version of a row. If a change to a row is pending, but not yet committed, the row cannot be read. что мы сейчас и наблюдаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 12:06 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий а raise то нафига? Просто втихую зароллбачить? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 12:48 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
10.03.2021 12:48, ъъъъъ пишет: > Просто втихую зароллбачить? :) втихую не надо. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 12:52 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий 10.03.2021 12:48, ъъъъъ пишет: > Просто втихую зароллбачить? :) втихую не надо. На то и raise. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 12:54 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
10.03.2021 12:54, ъъъъъ пишет: > На то и raise. ты слишком оптимистичен, если полагаешь, что у ламера стоит централизованный обработчик OnException Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 13:00 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий, какой же он ламер, он статьи на хабре (и т.д.) пишет: https://www.sql.ru/forum/1287320/delphi-samyy-bystryy-dataset-tjvmemorydata-tmemtableeh-tdxmemdata-tkbmmemtable ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 13:16 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящийты слишком оптимистичен, если полагаешь, что у ламера стоит централизованный обработчик OnException Он стоит в TApplication, этого достаточно. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 13:21 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
10.03.2021 13:16, ъъъъъ пишет: > какой же он ламер, он статьи на хабре (и т.д.) пишет на хабре одни питарасы! © Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 13:28 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Но не ламеры же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 15:09 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
ъъъъъНо не ламеры же. Наоборот. Именно этим ламеры и отличаются от чайников. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 15:18 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Не отменяя всего вышесказанного (по поводу транзакций и последующих поруганий), отмечу некоторую сугубую антиэстетику в упорно продвигаемом .Close в совокупности с .ExecSQL.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 22:55 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Vlad F Не отменяя всего вышесказанного (по поводу транзакций и последующих поруганий), отмечу некоторую сугубую антиэстетику в упорно продвигаемом .Close в совокупности с .ExecSQL.)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 22:57 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
YuRock, Кому висеть? =8-[ ] Я спросил электрика Петрова: — Для чего ты намотал на шею провод? Петров мне ничего не отвечает, Висит и только ботами качает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 23:27 |
|
||
|
FireDAC, Firebird: deadlock
|
|||
|---|---|---|---|
|
#18+
Мимопроходящий Dmitry Arefiev FireDAC сам ничего не выставляет, то есть по умолчанию. Файрдак оставляет дефолтный режим изоляции / настройки транзакции, как он есть в БД. Достаточно один раз выставить в TFDConnection.TxOptions.Isolation и далее так и будет в приложении. Попытка установить некоторый дефолтный режим изоляции транзакции привела к тому, что у некоторых все пошло лесом, например в MySQL. Поэтому - дефолтный для СУБД А дальше - инструмент есть ... Нет мозгов - я не врачь ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.03.2021, 23:33 |
|
||
|
|

start [/forum/topic.php?fid=58&fpage=24&tid=2037519]: |
0ms |
get settings: |
11ms |
get forum list: |
16ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
61ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
60ms |
get tp. blocked users: |
2ms |
| others: | 249ms |
| total: | 423ms |

| 0 / 0 |
