|
|
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Перерыл все интернеты, но никак не могу понять в чем может быть причина deadlock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 12:48:47 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенин, Надо срочно менять интернеты. На вот такие , например. Ну а если взять вот такие , то вообще красота. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 12:51:42 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Имею след. запрос: UPDATE OR INSERT INTO USERS_LOG (USER_ID, LAST_ACTIVE, IP_ADDRESS) VALUES ('6F175349428A6A4A93E8B1D65B9BEA78', CURRENT_TIMESTAMP, '127.0.0.1') Он выполняется каждым клиентом (web-броузер через Ajax) раз в минуту. Иногда этот запрос создает deadlock. Таблица не имеет никаких триггеров. Все транзацкии read write lock timeout 10 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 12:55:42 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
miwaonlineНадо срочно менять интернеты. На вот такие , например. Ну а если взять вот такие , то вообще красота. Извините, я не успел дописать сообщение и случайно нажал комбинацией клавиш кнопку отправить. Эту статью я читал. Ситуация происходит следующая: 1. Транзакция 1 (set transaction read write wait timeout 10) стартует и начинает выполнять запрос на update конкретной записи в таблице. 2. Видимо в этот же самый момент стартует Транзакция 2 с теме же параметрами и выполняет тот же самый запрос. 3. Транзакция 1 успешно завершается. 4. Транзакция 2 ничего не ждя выдает: "General error: -913 deadlock update conflicts with concurrent update concurrent transaction number is ..." Но транзакции же wait, а значит, по моему мнению, транзакция 2 должна дождаться комита первой и выполнить запрос без ошибок. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 13:05:38 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенинпо моему мнению, транзакция 2 должна дождаться комита первой и выполнить запрос без ошибок. Твоё мнение совпадает с мнением Ларри Эллисона, но отнюдь не Джима Старки. Поэтому иди-ка с ним на Оракул. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 13:49:31 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Почему у двух разных клиентов одинаковые ID (иначе не было бы concurrent update)? Если для каждого будет уникальный, то проблема исчезнет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:04:17 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Такой длинный идентификатор клиента и не уникальный... Галактика в опасности? или консерватория? Напомнил анекдот про ОченьДлинныйИдентификатор1,ОченьДлинныйИдентификатор2... Fr0sT-BrutalЕсли для каждого будет уникальный, то проблема исчезнет.А если еще и не адейтить, то ее не будет "бай дизайн". Даже Таблоиду не удалось нагнуть сервер на конкурентных инсертах. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:29:53 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyДаже Таблоиду не удалось нагнуть сервер на конкурентных инсертах. :) Николаю удалось. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:34:10 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovНиколаю удалось.Павел Ишенинвыполняется каждым клиентом раз в минуту.Явно не с такой частотой шли инсерты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:38:13 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Fr0sT-BrutalПочему у двух разных клиентов одинаковые ID (иначе не было бы concurrent update)? Если для каждого будет уникальный, то проблема исчезнет. Так клиенты же одинаковые. Это web, и как следствие могут быть где-то задержки. Например, при коннекте из Норильска (чаще всего именно у них выскакивает этот deadlock) через их спутниковую связь. Таким образом, ajax запрос где-то задержался и нам на сервер вместо одного через минуту сразу прилетело 2. В принципе ничего ужасного в этих deadlock нет, но хотелось бы избавиться если это возможно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:38:46 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенинхотелось бы избавиться если это возможно.инсерт "наше фсё". Опционально можно зачистить во время периодических регламентных работ. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:48:09 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПавел Ишенинпо моему мнению, транзакция 2 должна дождаться комита первой и выполнить запрос без ошибок. Твоё мнение совпадает с мнением Ларри Эллисона, но отнюдь не Джима Старки. Поэтому иди-ка с ним на Оракул. Спасибо Дмитрий. Мы используем как Oracle, так и Firebird, но первый раз столкнулись с разработкой под web с Firebird. Хотели решить проблему средствами СУБД, но если таким образом победить deadlock не получится, то будем решать с других сторон. Возвращаясь к теме, мы проводили эксперименты блокируя запись из IBExpert, и в этом случае получали ожидаемый результат - firebird ждал положенные 10 (или около того) секунд и возвращал ошибку "lock timeout" (или что-то вроде), а не "deadlock". Отсюда и причина исходного вопроса о причине deadlock. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:49:54 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyПавел Ишенинхотелось бы избавиться если это возможно.инсерт "наше фсё". Опционально можно зачистить во время периодических регламентных работ. Записанная информация используется для отображения активности пользователя в web-приложении. Если использовать только insert, то усложнится запрос select, а как следствие и время извлечения информации из СУБД. А скорость времени выполнения запросов в web-приложениях критически важна. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:54:30 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел ИшенинОтсюда и причина исходного вопроса о причине deadlock. Нет в исходном вопросе никакого "deadlock". Есть "update conflict", который возникает всегда , когда параллельные транзакции изменяют одну и ту же запись. Вне зависимости от параметра wait. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:55:10 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел ИшенинDimitry Sibiryakovпропущено... Твоё мнение совпадает с мнением Ларри Эллисона, но отнюдь не Джима Старки. Поэтому иди-ка с ним на Оракул. Спасибо Дмитрий. Мы используем как Oracle, так и Firebird, но первый раз столкнулись с разработкой под web с Firebird. Хотели решить проблему средствами СУБД, но если таким образом победить deadlock не получится, то будем решать с других сторон. Возвращаясь к теме, мы проводили эксперименты блокируя запись из IBExpert, и в этом случае получали ожидаемый результат - firebird ждал положенные 10 (или около того) секунд и возвращал ошибку "lock timeout" (или что-то вроде), а не "deadlock". Отсюда и причина исходного вопроса о причине deadlock. в примере, с которого все началось, запись НЕ БЛОКИРОВАНА ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:56:23 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенинто усложнится запрос select,Правда? ну если написание select first 1... order by last_active desc вместо select ... Павел Ишенина как следствие и время извлечения информации из СУБДровно одно индексное чтение в обоих случаях (если дизайн базы не с похмела делался). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 14:57:57 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел ИшенинЕсли использовать только insertто не будет версий->мусора, который гарантированно появится при апдейтах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:00:08 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovПавел ИшенинОтсюда и причина исходного вопроса о причине deadlock. Нет в исходном вопросе никакого "deadlock". Есть "update conflict", который возникает всегда , когда параллельные транзакции изменяют одну и ту же запись. Вне зависимости от параметра wait. deadlock есть в сообщении об ошибке с сервера. В любом случае, спасибо. Из вашего сообщения я понял, что эту ошибку никак не исправить средствами СУБД, а следовательно нужно искать решения на стороне web-приложения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:02:33 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенинскорость времени выполнения запросов в web-приложениях критически важна. Нет, если не баловаться таймаутом выполнения скриптов или использовать вменяемые языки программирования вместо них. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:04:14 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенин Код: sql 1. а если обновлять, только если таймстемп уже малость протух (более одной минуты)? Если такого рода запросы сыпятся без остановки, то возможно проредить update не помешает, чем снизить конкурентность. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ну и заменить транзакцию на nowait ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:05:07 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел Ишенинdeadlock есть в сообщении об ошибке с сервера. Это старый известный недостаток данного сообщения: в "братскую могилу" со строкой "deadlock" собраны все конфликты. Именно поэтому читая сообщение об ошибке ни в коем случае нельзя останавливаться на его первой строке . По-настоящему полезная информация приводится в последних строках. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:08:41 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyПавел ИшенинЕсли использовать только insertто не будет версий->мусора, который гарантированно появится при апдейтах. Мусор в этом случае появится в самой таблице + дополнительный индекс. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:09:32 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Павел ИшенинИногда этот запрос создает deadlock.А почему это проблема? Раз дэдлок, значит запись уже есть, сам же пользователь ее и апдейтит, чего ее апдейтить повторно? поймал, обработал, юзеру можно и не показывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 15:19:26 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyПавел ИшенинИногда этот запрос создает deadlock.А почему это проблема? Раз дэдлок, значит запись уже есть, сам же пользователь ее и апдейтит, чего ее апдейтить повторно? поймал, обработал, юзеру можно и не показывать. Юзеру эта ошибка не показывается. Ребята, большое спасибо за разъяснение причины ошибки. Теперь, когда я понимаю причину, я найду подходящее решение. Тему можно закрывать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 16:05:57 |
|
||
|
deadlock при update записи
|
|||
|---|---|---|---|
|
#18+
Ivan_PisarevskyДаже Таблоиду не удалось нагнуть сервер на конкурентных инсертах. :) чё-чё ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.11.2013, 16:40:30 |
|
||
|
|

start [/forum/topic.php?fid=40&msg=38479867&tid=1564104]: |
0ms |
get settings: |
8ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
190ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
63ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 512ms |

| 0 / 0 |
