web-dev-qa-db-fra.com

Comment puis-je effacer une impasse de transaction?

Utilisation de "Show Moteur InnoDB Statut" Je vois que wordpress a deux impasses. J'aimerais les effacer, mais je ne vois pas de processus actif pour l'une ou l'autre de ces CMD (c'est-à-dire que "tuer" et, espérons-le, forcez un rollback).

Je peux voir des identifiants de thread, des identifiants de requête, etc. mais rien que je puisse utiliser pour arrêter l'un des travaux.

Suggestions sur la façon de résoudre ce problème?

EDIT: Voici la partie (pertinente?) De l'état:

------------------------
LATEST DETECTED DEADLOCK
------------------------
110327 10:54:14
*** (1) TRANSACTION:
TRANSACTION 9FBA099E, ACTIVE 0 sec, process no 14207, OS thread id 1228433728 starting index read
mysql tables in use 1, locked 1
LOCK WAIT 2 lock struct(s), heap size 376, 1 row lock(s)
MySQL thread id 12505112, query id 909492800 juno....edu 129....54 wordpress_user updating
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots''
*** (1) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA099E lock_mode X waiting
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc _site_transient_timeout_theme_; (total 35 bytes);
1: len 8; hex 0000000000002b6d; asc       +m;;

*** (2) TRANSACTION:
TRANSACTION 9FBA0995, ACTIVE 0 sec, process no 14207, OS thread id 1230031168 starting index read
mysql tables in use 1, locked 1
3 lock struct(s), heap size 1248, 2 row lock(s)
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 wordpress_user updating
DELETE FROM wp_options WHERE option_name = ''_site_transient_timeout_theme_roots''
*** (2) HOLDS THE LOCK(S):
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X locks rec but not gap
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc   _site_transient_timeout_theme_; (total 35 bytes);
 1: len 8; hex 0000000000002b6d; asc       +m;;

*** (2) WAITING FOR THIS LOCK TO BE GRANTED:
RECORD LOCKS space id 4951009 page no 4 n bits 384 index `option_name` of table     `wordpress_work`.`wp_options` trx id 9FBA0995 lock_mode X waiting
Record lock, heap no 309 PHYSICAL RECORD: n_fields 2; compact format; info bits 32
0: len 30; hex 5f736974655f7472616e7369656e745f74696d656f75745f7468656d655f; asc   _site_transient_timeout_theme_; (total 35 bytes);
1: len 8; hex 0000000000002b6d; asc       +m;;

*** WE ROLL BACK TRANSACTION (1)
17
ethrbunny

Compte tenu de la sortie "InnoDb Statut" comme ceci:

---TRANSACTION 0 0, not started, process no 1024, OS thread id 140386055603968
MySQL thread id 197, query id 771 localhost marc
show innodb status

vous voudriez faire

KILL QUERY 771

tuer l'une des deux requêtes qui sont sans égouttement. Cela va tuer la requête, mais laissez la connexion ouverte. Si vous voulez tuer la connexion, alors vous feriez KILL 197.

22
Marc B

Utilisation de "Show Moteur InnoDB Statut" Je vois que wordpress a deux blocages ... Suggestions sur la façon de résoudre ce problème?

Je pensais que je fournirais plus d'informations qui nous auraient aidés à résoudre un problème similaire. Nous voyions Java problèmes hibernate provoquant des verrous bloqués. Nous avons trouvé les serrures en peignant la sortie de la sortie de:

show engine innodb status;

Cela croit une chep-tonne d'informations. La section correspondante est dans la section TRANSACTIONS. Dans votre sortie, le problème pertinent semble être:

3 lock struct(s), heap size 1248, 2 row lock(s)
MySQL thread id 12505095, query id 909492789 juno....edu 129.....54 

Pour nous, c'était la # lock struct(s) qui indiquait une serrure bloquée. Pour le tuer, vous devez exécuter en utilisant le "# ID de thread #" spécifié - dans ce cas:

kill 12505095

Cela a travaillé sur AWS MySQL RDS ainsi que MySQL local.

Dans notre section de transactions, nous voyons également les éléments suivants:

---TRANSACTION 644793773, ACTIVE 21 sec
2 lock struct(s), heap size 360, 1 row lock(s)
MySQL thread id 217, OS thread handle 0x2aef097700, query id 10177 1.3.5.7 mpsp cleaning up

Nous recherchons à la fois le 2 lock struct(s) et les messages ACTIVE 21 sec.