mysql未提交事务监控

mysql> select * from INNODB_TRX\G;
*************************** 1. row ***************************
                    trx_id: 4976519
                 trx_state: RUNNING
               trx_started: 2018-02-01 18:11:25
     trx_requested_lock_id: NULL
          trx_wait_started: NULL
                trx_weight: 3
       trx_mysql_thread_id: 8368442
                 trx_query: NULL
       trx_operation_state: NULL
         trx_tables_in_use: 0
         trx_tables_locked: 0
          trx_lock_structs: 2
     trx_lock_memory_bytes: 360
           trx_rows_locked: 1
         trx_rows_modified: 1
   trx_concurrency_tickets: 0
       trx_isolation_level: READ COMMITTED
         trx_unique_checks: 1
    trx_foreign_key_checks: 1
trx_last_foreign_key_error: NULL
 trx_adaptive_hash_latched: 0
 trx_adaptive_hash_timeout: 10000
          trx_is_read_only: 0
trx_autocommit_non_locking: 0
1 row in set (0.00 sec)

ERROR: 
No query specified

在这个视图中,我们看到有事务的开始时间和trx_query这个字段,可以根据这两个字段去检测是否有未提交的事务,一般情况下我们的线上mysql都要求的是小事务,如果trx_query这个字段是空的,并且当前时间与trx_stared的差值超过了1分钟,基本上可以告警出来了,有没有提交的事务。

你可能感兴趣的:(MYSQL)