Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
Подскажите пожалуйста можно ли в процедуре отловить и обработать ошибку deadlock. Заранее большое спасибо ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2008, 23:29 |
|
||
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
а на уровне базы данных разве недостаточно обработки дэдлоков??? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2008, 07:13 |
|
||
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
Поймать-то вы его, конечно, поймаете, но обрабатывать уже будет нечего. Ловите sqlstate 40001. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2008, 07:50 |
|
||
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
Peter Wilsonа на уровне базы данных разве недостаточно обработки дэдлоков??? На уровне базы данных детектор произвольно выбирает жертву. Хотелось бы как-то в процедуре отловить что команада повисла на дедлоке и среагировать до того как об этом узнает детектор. mustaccioПоймать-то вы его, конечно, поймаете, но обрабатывать уже будет нечего. Ловите sqlstate 40001. A что если поймать до того как детектор грохнет один из процессов? Может быть тогда можно что-то ещё будет сделать. Я вот подумал, что если в процедуре установить SET CURRENT LOCK TIMEOUT 0 и потом создать обработчик на событие недоступности ресурса с циклом в котором команада будет вызываться до тех пор пока ресурс не освободится? Тогда может быть вообще дедлоков возникать не будет? Что-то вроде этого: Код: 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. Но здесь опять вопрос возникает - что будет с производительностью? Насколько больше времени уйдёт на весь этот цикл по сравнению с обычным ожиданием ресурса. Посоветуйте пожалуйста, насколько подобный подход может быть оправдан и какая, вообще, практика считается хорошей при написании процедур заведомо обречённых на конкурренцию за ресурс. Очень извиняюсь если коряво изложил свой вопрос. Заранее всем большое спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.04.2008, 22:15 |
|
||
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
KruПодскажите пожалуйста можно ли в процедуре отловить и обработать ошибку deadlock.Обработать можно, только надо иметь ввиду следующее: Поведением менеджера при lock timeout рулить можно с помощью переменной DB2LOCK_TO_RB , т.е. либо заставить его откатывать только команду, выполнившую запрос, либо всю транзакцию (по умолчанию). При deadlock текущая транзакция всегда откатывается. SET LOCK TIMEOUT 0 использовать нерационально, лучше какое-нибудь допустимое небольшое значение, приемлемое для ожидания. При его истечении можно и так, как у вас, но имейте ввиду то, что я написал выше. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 10:17 |
|
||
|
обработка deadlock
|
|||
|---|---|---|---|
|
#18+
Mark Barinstein KruПодскажите пожалуйста можно ли в процедуре отловить и обработать ошибку deadlock.Обработать можно, только надо иметь ввиду следующее: Поведением менеджера при lock timeout рулить можно с помощью переменной DB2LOCK_TO_RB , т.е. либо заставить его откатывать только команду, выполнившую запрос, либо всю транзакцию (по умолчанию). При deadlock текущая транзакция всегда откатывается. SET LOCK TIMEOUT 0 использовать нерационально, лучше какое-нибудь допустимое небольшое значение, приемлемое для ожидания. При его истечении можно и так, как у вас, но имейте ввиду то, что я написал выше. Огромное спасибо за ответ. С DB2LOCK_TO_RB есть одно большое неудобство - её нельзя задать из процедуры. Но в моём случае, кажется будет достаточно выставить приемлемое время ожидания и потом обработать ошибку таймаута. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.04.2008, 23:39 |
|
||
|
|

start [/forum/topic.php?fid=43&msg=35275707&tid=1603917]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
51ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 255ms |
| total: | 387ms |

| 0 / 0 |
