Bonjour à tous,

J'ai un petit problème au niveau d'un lock sur une table dans MySQL. J'ai très peu d'expérience sur MySQL je suis un dba Sybase à l'origine.

Mon souci est que régulièrement des blocages apparaissent sur une table baignoire qui est très accédé mais qui possède aussi très peu de lignes (pas plus de 20 à in instant t).

si je regarde plus en détail dans la table innodb_trx je trouve le processus qui bloque tout le monde. Par contre il est en RUNNING mais aucune info dans trx_query qui est à null. Donc pas moyen de savoir ce qu'il fait (sauf s'il y a une autre façon de faire?)

Je m’aperçois aussi que le départ de la transaction peut être très éloigné des fois de plus de 20mins alors que rien ne remonte dans les requêtes lentes.

De plus ayant les journaux binaires activés si je regarde dedans à l'heure de début de la transaction je ne trouve absolument rien.

Pour information l'appli qui utilise la base est une application médicale dont certain client sont en wifi et sont souvent déconnecté du réseau. Je me demande donc s'il peu s'agir d'un processus fantôme ?

Voici les quelques traces que j'ai:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
 
mysql> select * from information_schema.innodb_trx\G
*************************** 1. row ***************************
                    trx_id: 4C7062FD
                 trx_state: LOCK WAIT
               trx_started: 2013-09-03 10:27:36
     trx_requested_lock_id: 4C7062FD:0:507913:17
          trx_wait_started: 2013-09-03 10:27:36
                trx_weight: 2
       trx_mysql_thread_id: 11798
                 trx_query: UPDATE `cmn_blocage` SET `Date_Raffraichissement` = '2013-09-03 10:27:35.980' WHERE `IDCMN_Blocage`=2504951
       trx_operation_state: starting index read
         trx_tables_in_use: 1
         trx_tables_locked: 1
          trx_lock_structs: 2
     trx_lock_memory_bytes: 376
           trx_rows_locked: 1
         trx_rows_modified: 0
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 9703
*************************** 2. row ***************************
                    trx_id: 4C706283
                 trx_state: LOCK WAIT
               trx_started: 2013-09-03 10:27:20
     trx_requested_lock_id: 4C706283:0:507913:21
          trx_wait_started: 2013-09-03 10:27:20
                trx_weight: 3
       trx_mysql_thread_id: 12667
                 trx_query: DELETE FROM `cmn_blocage` WHERE  ( ( `cmn_blocage`.`ID_UTILISATEUR` = 820 ) AND ( `cmn_blocage`.`NomMachine` = 'CHEFBLOC' ) )
       trx_operation_state: fetching rows
         trx_tables_in_use: 1
         trx_tables_locked: 1
          trx_lock_structs: 3
     trx_lock_memory_bytes: 1248
           trx_rows_locked: 20
         trx_rows_modified: 0
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 0
*************************** 3. row ***************************
                    trx_id: 4C6D9668
                 trx_state: RUNNING
               trx_started: 2013-09-03 09:41:57
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 129
       trx_mysql_thread_id: 11968
                 trx_query: NULL
       trx_operation_state: NULL
         trx_tables_in_use: 0
         trx_tables_locked: 0
          trx_lock_structs: 29
     trx_lock_memory_bytes: 6960
           trx_rows_locked: 50
         trx_rows_modified: 100
   trx_concurrency_tickets: 0
       trx_isolation_level: REPEATABLE READ
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 3075
3 rows in set (0.09 sec)
 
mysql> select * from information_schema.innodb_lock_waits\G
*************************** 1. row ***************************
requesting_trx_id: 4C7062FD
requested_lock_id: 4C7062FD:0:507913:17
  blocking_trx_id: 4C706283
 blocking_lock_id: 4C706283:0:507913:17
*************************** 2. row ***************************
requesting_trx_id: 4C706283
requested_lock_id: 4C706283:0:507913:21
  blocking_trx_id: 4C6D9668
 blocking_lock_id: 4C6D9668:0:507913:21
2 rows in set (0.05 sec)
Si vous avez des idées ou d'autres façon de prendre des traces je suis preneur.

Merci d'avance pour votre aide

Cordialement,
Johan