|
|
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
Имеется таблица активность пользователей Код: sql 1. 2. 3. 4. 5. В нее происходит запись когда юзер логинится Код: sql 1. и удаление записи когда выходит. Код: sql 1. Периодически (не часто) раз в несколько дней получается deadlock Код: sql 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. Кто-то может объяснить почему ловится дедлок и что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:08 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
petr12345, В какой-то момент вы одновременно пытаетесь и вставить запись с id=14505852416379, и удалить её же. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:14 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
Что делать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:19 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
С тем что одновременно приходят запросы - тоже понятно. Но почему так происходит? Кто что блокирует? Никаких транзакция я явно не открываю. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:21 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
petr12345, Откуда у вас происходит значение $user_id ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:22 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
petr12345Никаких транзакция я явно не открываю.Они открываются автоматически при любом UPDATE/INSERT/DELETE. И, если не включен автокоммит, остаются открытыми до явного или неявного завершения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:24 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
miksoft, Из запроса к бекенду. Как я понимаю insert получает сперва блокировку S, в этот момент другой запрос просит блокировку X для delete, затем первый просит блокировку X. Если это так, то вопрос - на фига insert-у блокировка S ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.12.2015, 16:28 |
|
||
|
Deadlock при delete/insert
|
|||
|---|---|---|---|
|
#18+
petr12345, Если добавляются транзакции - их лучше убрать - это атомарная операция. Так же необходимо проверить, когда делаются бекапы или оптимизации таблиц, если они делаются по крону - то нужно помнить, что такие операции блокируют таблицы полностью на запись. Так же можно попробовать использовать дополнительную колонку `last_active` = NOW() ()в таблице с пользователями или отдельно, и обновлять строку (без удалений и вставок). Если значение `last_active` больше чем NOW() - 60*5 - то человек скорее всего онлайн. В вашем варианте человек может не нажать "выход" и будет онлайн всегда (если это не контролирует другая функция). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.01.2016, 18:07 |
|
||
|
|

start [/forum/topic.php?fid=47&fpage=115&tid=1832314]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
65ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 225ms |
| total: | 362ms |

| 0 / 0 |
