Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
14.07.2011, 01:43
|
|||
---|---|---|---|
|
|||
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
Доброго. При чтении документов по использованию транзакций часто натыкаюсь на фразу "если транзакция напоролась на блокировку, нужно откатить транзакцию и повторить заново". И учебный примерчик, где транзакцию положили в цикл и крутят её, пока не выполнится. Гадость ещё та. Сколько не пробую - не получается у меня стройная модель для обработки отпадающих по блокировке транзакций. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13.
Всё подсказывает, что стоит попробовать ещё раз. Но такой подход сильно увеличивает размер кода и усложняет его ? Не обращать особого внимания - "Упс. Попробуйте еще разок" ? Знаю правильный ответ: "индивидуальный подход". Но он меня не устраивает, ибо я не знаю вариантов решений для индивидуального подхода. Поделитесь, пжлст, опытом ... как у вас устроена обработка ошибок при выполнении запросов. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
14.07.2011, 09:38
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
AndryG, индивидуальный подход, это - ВИ или преценденты. Пишешь их в ворд, а спрограммировать можно всё что угодно :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.07.2011, 09:42
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
AndryGПри чтении документов по использованию транзакций часто натыкаюсь на фразу "если транзакция напоролась на блокировку, нужно откатить транзакцию и повторить заново". Прикольные учебники. AndryGВсё подсказывает, что стоит попробовать ещё раз. Но такой подход сильно увеличивает размер кода и усложняет его ? (задумавшись) А, наверное, Вы собираетесь кодировать это отдельно в вызове каждой из 10'000 хранимок? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.07.2011, 20:46
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
"наверное, Вы собираетесь кодировать это отдельно в вызове каждой из 10'000 хранимок? " Какие хранимки! Вы что :) Обычно авторы советов "если транзакция напоролась на блокировку, нужно откатить транзакцию и повторить заново" блещут словами "бизнес-объект", "база данных - всего лишь хранилище информации" и прочее многозвенство :) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
18.07.2011, 20:56
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
AndryG, а что смущает? ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2011, 00:06
|
|||
---|---|---|---|
|
|||
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
softwarer, Shtock, :) вот посему я на форум и пришел. iscrafm, смущает, что напоровшись на блокировку я стою в полной растеряности, что делать. Выдавать окно ошибки - глупо - это не ошибка. Молча спускать на тормозах - задача не выполнена - нельзя. Выдать сообщение "Вам повезло, вы нарвались блокировку - пробуйте еще раз" - глупо. Найти нормальные варианты (не демо-учебно-муть) у меня не получилось. Вот и прошу совета, дабы было над чем думать и что себе придумывать. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2011, 00:17
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
AndryGiscrafm, смущает, что напоровшись на блокировку я стою в полной растеряности, что делать. Выдавать окно ошибки - глупо - это не ошибка. Молча спускать на тормозах - задача не выполнена - нельзя. Выдать сообщение "Вам повезло, вы нарвались блокировку - пробуйте еще раз" - глупо. Найти нормальные варианты (не демо-учебно-муть) у меня не получилось. Вот и прошу совета, дабы было над чем думать и что себе придумывать. отведите разумное время на разрешение ситуации (повторение попыток), после чего, все же, отмените транзакцию и попросите, только вежливо конечно, повторить ее позже. Это очень редкая ситуация, но иногда все же случается. Ничего страшного... ... |
|||
:
Нравится:
Не нравится:
|
|||
|
20.07.2011, 09:01
|
|||
---|---|---|---|
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
AndryG, программист обязан выяснять глубже причину "нарвались". Нельзя просто написать $q->trans()->commit(); }catch(db_Exception $e){ $q->trans()->rollback(); throw $e; } и спать спокойно. - делать модель \ демку \прототип \ нагрузочное тестирование - разводить блокировки разными методами (форум БД) В идеале, ошибка - Системная (синий экран виндовс) или "нарвались" ) , должны быть как можно реже. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
26.07.2011, 00:02
|
|||
---|---|---|---|
|
|||
Клиент. Обработка блокировок при выполнении запросов. |
|||
#18+
iscrafmотведите разумное время на разрешение ситуации (повторение попыток), после чего, все же, отмените транзакцию и попросите, только вежливо конечно, повторить ее позже. То есть код примерно такой получается? Код: 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.
Слабо верится. что люди так разрулвают конфликты :( ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/moderation_log.php?user_name=%D0%B0%D0%BB%D1%8C%D0%B1%D0%B5%D1%80%D1%82]: |
0ms |
get settings: |
10ms |
get forum list: |
17ms |
get settings: |
8ms |
get forum list: |
12ms |
get settings: |
10ms |
get forum list: |
13ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
36ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
others: | 1585ms |
total: | 1775ms |
0 / 0 |