SQLinfo.ru - Все о MySQL Webew.ru: теория и практика веб-технологий

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 30.08.2010 16:21:03

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

блокировка таблиц

Здравствуйте. Show innodb status выдает
------------------------
LATEST DETECTED DEADLOCK
------------------------
100830 16:07:51
*** (1) TRANSACTION:
TRANSACTION 0 218681843, ACTIVE 0 sec, process no 17323, OS thread id 140295479875856 fetching rows
mysql tables in use 2, locked 2
LOCK WAIT 6 lock struct(s), heap size 1216, 5 row lock(s), undo log entries 1
MySQL thread id 8777752, query id 96759491 localhost island8 preparing
UPDATE
             `stor`
           SET
             `count`=`count`-1
           WHERE
             `user_id`=80338382
           AND
             `item_id` IN (SELECT `item_id` FROM `item` WHERE `item_name`='bar')
           AND
             `count` > 0
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 0 page no 10734 n bits 512 index `PRIMARY` of table `island`.`stor` trx id 0 218681843 lock_mode X locks rec but not gap waiting
Record lock, heap no 64 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
0: len 4; hex 8002044f; asc    O;; 1: len 6; hex 0000061f795f; asc     y_;; 2: len 7; hex 800000385b080a; asc    8[  ;; 3: len 4; hex 84c9ddce; asc     ;; 4: len 4; hex 80000248; asc    H;; 5: len 4; hex 80000001; asc     ;;

*** (2) TRANSACTION:
TRANSACTION 0 218681765, ACTIVE 0 sec, process no 17323, OS thread id 140293540428048 fetching rows, thread declared inside InnoDB 405
mysql tables in use 1, locked 1
425 lock struct(s), heap size 63472, 160841 row lock(s)
MySQL thread id 8777416, query id 96759414 localhost island7 updating
DELETE FROM `stor` WHERE `count`<=0
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 0 page no 10734 n bits 512 index `PRIMARY` of table `island`.`stor` trx id 0 218681765 lock_mode X
Record lock, heap no 1 PHYSICAL RECORD: n_fields 1; compact format; info bits 0
0: len 8; hex 73757072656d756d; asc supremum;;
Record lock, heap no 2 PHYSICAL RECORD: n_fields 6; compact format; info bits 0
0: len 4; hex 800203e5; asc     ;; 1: len 6; hex 0000061f795f; asc     y_;; 2: len 7; hex 800000385b04a6; asc    8[  ;; 3: len 4; hex 802110f4; asc  !  ;; 4: len 4; hex 80000244; asc    D;; 5: len 4; hex 80000001; asc     ;;
Обьясните пожалуйста в чем может быть причина блокировки таблиц. Зарание всем благодарен.

Неактивен

 

#2 30.08.2010 18:56:45

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: блокировка таблиц

Представьте себе веревку, вдоль которой разложены яблоки — зеленые
и красные. С двух сторон веревки начинают ползти два червяка (очень про-
жорливые). Причем первый червяк ест только зеленые, а второй отъедает
от красных яблок половинки так, что они становятся визуально зелеными.
Вот посередине они встречаются и начинают путаться — то ли это зеленое
яблоко, и его надо съесть, то ли оно было красным, но отгрызено.

У Вас классический deadlock — нужно просто повторить откаченную тран-
закцию.

Неактивен

 

#3 30.08.2010 21:20:11

cooler
Завсегдатай
Зарегистрирован: 14.01.2010
Сообщений: 52

Re: блокировка таблиц

paulus написал:

У Вас классический deadlock — нужно просто повторить откаченную тран-
закцию.

Спасибо, но Вы не могли бы поподробнее обьяснить что надо сделать. Просто мне не совсем понятно smile

Неактивен

 

#4 30.08.2010 21:59:58

paulus
Администратор
MySQL Authorized Developer and DBA
Зарегистрирован: 22.01.2007
Сообщений: 6757

Re: блокировка таблиц

У Вас есть два клиента. У одного запрос выполнился, а у второго закончился
ошибкой «Deadlock detected. Please restart the transaction». На втором клиенте
нужно заново начать транзакцию и выполнить все действия до ее завершения.

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson