|
|
|
Коварные дедлоки - Deadlock found
|
|||
|---|---|---|---|
|
#18+
Столкнулся с проблемой дедлоков на сайте-магазине БД MariaDB 10. Обработка заказов выглядит так: 1. START TRANSACTION; 2. UPDATE shop_items SET status=3, buyer_id=%BUYER_ID% WHERE id IN (SELECT item_id FROM shop_cart WHERE buyer_id=%BUYER_ID% AND item_type=%ITEM_TYPE%) AND status=2 3. списание баланса и прочее 4. END TRANSACTION; Всё отлично работало, пока не увеличился потом покупателей - в часы пик в логах появились дедлоки на втором запросе: Deadlock found when trying to get lock; try restarting transaction Также есть запрос выполняющийся по крону раз в час: UPDATE shop_order o JOIN shop_items d ON o.item_id = d.id AND d.taxfree_accepted=0 SET o.check_status=5 WHERE o.item_type=%ITEM_TYPE% AND o.check_status=0; Периодически ловлю дедлоки на нем. Как с этим бороться? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:00:29 |
|
||
|
Коварные дедлоки - Deadlock found
|
|||
|---|---|---|---|
|
#18+
Ark Buckyв часы пик в логах появились дедлоки на втором запросе:И где этот второй запрос? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:06:01 |
|
||
|
Коварные дедлоки - Deadlock found
|
|||
|---|---|---|---|
|
#18+
2. UPDATE shop_items SET status=3, buyer_id=%BUYER_ID% WHERE id IN (SELECT item_id FROM shop_cart WHERE buyer_id=%BUYER_ID% AND item_type=%ITEM_TYPE%) AND status=2 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:11:02 |
|
||
|
Коварные дедлоки - Deadlock found
|
|||
|---|---|---|---|
|
#18+
А, второй по номеру. Я думал, что "второй" в смысле два апдейта взаимоблокируются, первый указан, а второй нет. Конкретного решения пока не вижу. Есть два общих: 1) Оптимизировать запросы, чтобы они выполнялись быстрее и дедлоки происходили реже. В частности, возможно, для вашей версии нужно IN (SELECT ... ) переписать через JOIN. 2) Диагностировать дедлок и попытаться выполнить транзакцию еще раз. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.03.2015, 20:24:02 |
|
||
|
|

start [/forum/topic.php?fid=47&msg=38904496&tid=1833444]: |
0ms |
get settings: |
10ms |
get forum list: |
15ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
39ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
43ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 360ms |

| 0 / 0 |
