|
|
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Есть процесс DEADLOCK TUNE который следит за DEADLOCKами, если он находит DEADLOCK, что он делает? От просто отрубает одну транзакцию и выдает ошибку или он успешно закрывает обе транзакции? Заранее Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2008, 20:48 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Прошу прощения, не DEATHLOCK, а DEADLOCK! Модератор: Всё нормально, я исправил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.08.2008, 23:36 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_DenЕсть процесс DEATHLOCK TUNE который следит за DEATHLOCKами, если он находит DEATHLOCK, что он делает? От просто отрубает одну транзакцию и выдает ошибку или он успешно закрывает обе транзакции? Заранее Спасибо! откатывает самую "легкую" транзакцию, давая тем самым ход второй опционально пишет в лог инфу о дедлоке и его жертве ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 12:52 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
А после отработки второй транзакции, транзакцию-жертву от не как не использует? Ну и накотывал бы транзакцию-жертву после отработки второй транзакции! Или это противоречет чему-то? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 15:36 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Когда ASE убивает "жертву", то клиенту возвращается код -3. Правильно написанное клиентское приложение должно по этому коду повторить транзакцию. ASE самостоятельно не будет сам проводить "жертву" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 17:04 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
morisКогда ASE убивает "жертву", то клиенту возвращается код -3. Правильно написанное клиентское приложение, должно по этому коду повторить транзакцию. ASE самостоятельно не будет сам проводить "жертву" А это обусловленно какими-то постулатоми РСУБД или просто реализация такая? Почему несделать чтоб ASE сам бы заботился о "жертве"? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 17:38 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Я думаю что так и должно было бы быть если бы все было "по уму", т.е. СУБД должна была бы сама заботиться о повторе victim transaction, а не возлагать еще и это на плечи бедного application, тем более что код ошибки (@@error) = 1205, который возвращается servero-m невозможно проверить ни в sp, ни в ODBC (по крайней мере в старых версиях), только через Open Client (а если у вас только cвязка VB/CRW/ODBC -> sp, что делать ?). Насчет return status (code) = -3 не пробовал проверить, может и можно, хотя сомеваюсь, т.к. "проверялка" сама должна быть в коде скажем этой же sp a она сразу отрубается как процесс сервером. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 19:26 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_Den morisКогда ASE убивает "жертву", то клиенту возвращается код -3. Правильно написанное клиентское приложение, должно по этому коду повторить транзакцию. ASE самостоятельно не будет сам проводить "жертву" А это обусловленно какими-то постулатоми РСУБД или просто реализация такая? Почему несделать чтоб ASE сам бы заботился о "жертве"? Это просто невозможно в принципе. Сервер знает о том, какие операции произошли в транзакции до момента дедлока, но не знает ничего о тех операциях, которые ещё должны были бы выполниться ПОСЛЕ дедлока, просто потому, что они ещё не успели выполниться. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Кроме того, последующие операции вообще могут быть произвольными, например, если генерируются клиентом в зависимости от условий, или зависят от данных. Ну и наверное не надо говорить о том, что транзакция может как утверждаться (commit) , так и откатываться, также в зависимости от данных, иначе вообще зачем транзакции нужны ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 19:37 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > Я думаю что так и должно было бы быть если бы все было "по уму", т.е. > СУБД должна была бы сама заботиться о повторе victim transaction, а не > возлагать еще и это на плечи бедного application, Ну, Zhora, от вас я такого не ожидал, вы же вроде бы грамотный специалист ... А если подумать немного ? В общем, читайте, что я тем более что > код ошибки (@@error) = 1205, который возвращается servero-m невозможно > проверить ни в sp, Да, вы правы, невозможно, потому что выполнение SP прерывается. Выполнение потока управления многооператорного батча, посланного на сервер, тоже. Поэтому средствами TSQL это вообще никак не обнаружить, просто потому, что TSQL в этом случае УЖЕ НЕ БУДЕТ ВЫПОЛНЯТЬСЯ. ни в ODBC (по крайней мере в старых версиях), только > через Open Client (а если у вас только cвязка VB/CRW/ODBC -> sp, что > делать ?). Ну, возможно это драйвер кривоват был для ASE. Для MS SQLServer 6.0 я помню точно эта ошибка обнаруживалась, и я её обрабатывал именно на ODBC. Кстати, как ни странно, я с ASE через ODBC практически вообще никогда не работал - только OpenClient > Насчет return status (code) = -3 не пробовал проверить, может и можно, > хотя сомеваюсь, т.к. "проверялка" сама должна быть в коде скажем этой же > sp a она сразу отрубается как процесс сервером. Никакого кода не будет, возможно, при вызове процедуры с клиента будет сэмулирован какой-то плохой код, как это делается в случае с вызовом несуществующей процедуры. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 19:47 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Zhoraотрубается как процесс сервером. Так не просто транзакция откатывается, а весь процесс киляется? Что-то я запутался!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 20:19 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > Так не просто транзакция откатывается, а весь процесс киляется? Что-то я > запутался!!! На сколько я помню, соединение не разрывается. Процесс прекращается, т.е. останавливается выполнение всех посланных комманд (и текущей выполняемой также). Транзакция откатывается. Соединение переводится в состояние, когда оно может принимать последующие запросы. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 20:40 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
MasterZiv cherrex_Den morisКогда ASE убивает "жертву", то клиенту возвращается код -3. Правильно написанное клиентское приложение, должно по этому коду повторить транзакцию. ASE самостоятельно не будет сам проводить "жертву" А это обусловленно какими-то постулатоми РСУБД или просто реализация такая? Почему несделать чтоб ASE сам бы заботился о "жертве"? Это просто невозможно в принципе. Сервер знает о том, какие операции произошли в транзакции до момента дедлока, но не знает ничего о тех операциях, которые ещё должны были бы выполниться ПОСЛЕ дедлока, просто потому, что они ещё не успели выполниться. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Кроме того, последующие операции вообще могут быть произвольными, например, если генерируются клиентом в зависимости от условий, или зависят от данных. Ну и наверное не надо говорить о том, что транзакция может как утверждаться (commit) , так и откатываться, также в зависимости от данных, иначе вообще зачем транзакции нужны ... А можно по подробней! Я выполняю какую-то транзакцию, в середине попадаю в дэдлок, транзакция откатываеться. Что мешает еше раз выполнить этот скрипт который был перед дэдлоком? Догатка у меня только одна, что некое "третье лицо" во время пока сервер разбирался с дедлоком, произвел изменение данных и согласованность уже нарушилась. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 23:20 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Вернее в чем отличие между тем что транзакцию повторит клиент(приложение) или сервер(сам ASE)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2008, 23:28 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > А можно по подробней! Я выполняю какую-то транзакцию, в середине попадаю > в дэдлок, транзакция откатываеться. Что мешает еше раз выполнить этот > скрипт который был перед дэдлоком? Ничего, это выполнить можно. Вопрос в другом - что делать дальше, чтобы завершить транзакцию. Догатка у меня только одна, что некое > "третье лицо" во время пока сервер разбирался с дедлоком, произвел > изменение данных и согласованность уже нарушилась. И это, кстати, тоже. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2008, 09:57 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > Я тоже так думаю, по крайней мере я использую некий стандарт где все > транзакции начинаются и > заканчиваются (begin tran,commit tran, rollback tran, savepoint) внутри > sps, a не где-то в "стороне" (в application), > так что server "ситаксически" осведомлен о них "эаранее", > а не только в момент выполнения и мог бы "проследить" за ними. Это - только один из возможных подходов. А сервер расчитан на ВСЕ. Но даже в случае, если мы имеем хранимую процедуру со всем кодом, и дедлок произошёл в процессе её выполнения, невозможно автоматически перевыполнить её, поскольку далее (после дэдлока) в процедуре может быть какой-то код, который осуществляет ветвление на основе прочитанных данных и в таком случае сервер просто не будет знать, по какой ветке идти. Для этого надо было бы прочитать данные еще раз, т.е. "накатывать" процедуру не с использованием лога записанных операторов и изменённых ими данных, а просто перезапуская процедуру. А это уже будет в другой транзакции. Этого сервер не имеет право делать. > Вот поискал и отрыл , мне кажется одно подтверждение: "lexical > transactions" с автоматическим рестартом сервером > после deadlock situation в ObjectStore (Progress.com/IBM ?), > хотя может и притянуто за уши (мной): Да, наверное. Дело в том, что под словом "транзакция" скрывается реально очень много терминов, совершенно разных. Т.е. транзакции бывают разные. В той модели транзакций видимо специально оговорено такое поведение. В ACID -транзакциях из ANSI SQL такого нет. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2008, 10:04 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > после deadlock situation в ObjectStore (Progress.com/IBM ?), > хотя может и притянуто за уши (мной): > http://progress.atgnow.com почему-то не удалось мне прочитать страницу эту. Там в центре - пустое поле и всё. Сама страница загружается. Там на флешах что ли всё ? Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2008, 10:16 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Не знаю, но я теперь тоже не могу прочитать, хотя вчера мог. Что касается транзакций - это самые обычные "ACID транзакции". Ну я думаю серверу даже в случае "application transaction" (moe), для повтора после deadlock достаточно опять дойти до точки deadlock-a используя как-то свой trlog (a может и vce rollback-ать to необязательно было бы ?), короче используя свои внутренние механизмы, а затем опять "отдаться" приложению, тогда ему (серверу) совсем не нужна будет информация о том что там будет "дальше", уже опять будет продолжать "рулить" application, сделать это прозрачным для application воoбще (или пoлупрозрачным как в этом ObjectStore где можно задать лимит повторов после deadlock-a) безо всяких error типа 1205. Sybase "любит" деадлочить пусть сам и разбирается с этим до конца ("саночки возит"), а не "проливает кровь безвинных жертв/victims", да еще под лозунгом "спасение утопающих-дело рук самих утопающих". Вообще по части перекладывания ответственности на developer/DBA Sybase ASE явно "впереди планеты всей", чего стоит одно dump trlog, без которого СУБД просто остановится, а за который почему-то отвечает DBA со своими доморощенными скриптами. Hy сделайте наконец-то что-то типа archivelog mode как в Oracle. Ну, тема "ответственности" в software industry - отдельный большой разговор и теме этой явно уделяется мало внимания ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2008, 22:16 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Zhora wrote: > Не знаю, но я теперь тоже не могу прочитать, хотя вчера мог. Что > касается транзакций - это самые обычные "ACID транзакции". Ну я думаю > серверу даже в случае "application transaction" (moe), для повтора после > deadlock достаточно опять дойти до точки deadlock-a используя как-то > свой trlog (a может и vce rollback-ать to необязательно было бы ?), > короче используя свои внутренние механизмы, а затем опять "отдаться" > приложению, тогда ему (серверу) совсем не нужна будет информация о том > что там будет "дальше", уже опять будет продолжать "рулить" application, Вот когда придумаешь API для этого действа, тогда и поговорим. О сложности такого мероприятия я уже и не говорю, начать хотя бы с того, что клиент должен стать и сервером тоже, чтобы АСИНХРОННО принимать запросы на "продолжение выполнения чего-то там". > сделать это прозрачным для application воoбще (или пoлупрозрачным как в > этом ObjectStore где можно задать лимит повторов после deadlock-a) безо > всяких error типа 1205. > > Sybase "любит" деадлочить пусть сам и разбирается с этим до конца > ("саночки возит"), а не "проливает кровь безвинных жертв/victims", да > еще под лозунгом "спасение утопающих-дело рук самих утопающих". Sybase тут далеко не одинок, все СУБД делают аналогичным образом. Не у всех есть deadlock tune и вообще обнаружение дедлоков - большинство СУБД попроще ограничиваются просто тайм-аутами на ожидание, т.е. что это именно deadlock вообще не определяется. Не получил блокировку вовремя- всё, иди на фиг со своей транзакцией. > Вообще по части перекладывания ответственности на developer/DBA Sybase > ASE явно "впереди планеты всей", чего стоит одно dump trlog, без > которого СУБД просто остановится, а за который почему-то отвечает DBA со > своими доморощенными скриптами. Hy сделайте наконец-то что-то типа > archivelog mode как в Oracle. Так, разагитировался В общем, это не соответствует действительности. Впереди планеты всей, как известно, по этому показателю именно оракл. (хотя я не в общем лишь передаю общеозвученное мнение, ну, давайте будем считать, что они одинаковы, но вот что ASE сильно как-то хуже, я не думаю). А на счёт логов, так уж наверное ты знаешь , как законфигурить ASE, чтобы она автоматом лог в базе обрезала. И знаешь, зачем сделана возможность, чтобы лог НЕ обрезался автоматом. Так зачем всё это ? (вопрос риторический). Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2008, 23:53 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
А есть способ искуственно создать deadlock, чтоб отладить клиентское приложение(код-3)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2008, 16:48 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > А есть способ искуственно создать deadlock, чтоб отладить клиентское > приложение(код-3)? Конечно. Имитирующий скрипт пишется легко. Только надо это делать в двух коннекциях. Одна из них должна быть коннекцией тестируемого приложения. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2008, 19:03 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
MasterZiv cherrex_Den wrote: > А есть способ искуственно создать deadlock, чтоб отладить клиентское > приложение(код-3)? Конечно. Имитирующий скрипт пишется легко. Только надо это делать в двух коннекциях. Одна из них должна быть коннекцией тестируемого приложения. Posted via ActualForum NNTP Server 1.4 А примерчек можно? И ли "наводку"! Подскажите глупому! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.09.2008, 22:21 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
cherrex_Den wrote: > > А есть способ искуственно создать deadlock, чтоб отладить клиентское > > приложение(код-3)? Вот, публицирую с любезного разрешения автора. Запустив данную процедуру в двух соединениях из двух потоков (или приложений) более-менее в одно время гарантированно получишь deadlock. Код: 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. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.09.2008, 11:46 |
|
||
|
ASE 12.5 как ase разбирается с deadlock
|
|||
|---|---|---|---|
|
#18+
Спасибо! Процедура работает! ODBC возвращает: Код: plaintext Правда я "-3" не нашел в ODBC, скорее это код OpenClient, но по "ERROR [40001]" все можно отловить!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.09.2008, 14:09 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35495882&tid=2011393]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
53ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
58ms |
get tp. blocked users: |
2ms |
| others: | 14ms |
| total: | 171ms |

| 0 / 0 |

Извините, этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
... ля, ля, ля ...