У меня есть транзакция "ROLLING BACK", с trx_mysql_thread_id = 0
> mysql> SELECT * FROM information_schema.innodb_trx\G;
> *************************** 1. row ***************************
> trx_id: 4395673006
> trx_state: ROLLING BACK
> trx_started: 2019-05-30 16:24:08
> trx_requested_lock_id: NULL
> trx_wait_started: NULL
> trx_weight: 26418873
> trx_mysql_thread_id: 0
> trx_query: NULL
> trx_operation_state: NULL
> trx_tables_in_use: 0
> trx_tables_locked: 0
> trx_lock_structs: 11
> trx_lock_memory_bytes: 1184
> trx_rows_locked: 1
> trx_rows_modified: 26418862 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: 10000
> trx_is_read_only: 0 trx_autocommit_non_locking: 0 1 row in set (0.00 sec)
>
> ERROR: No query specified
А вот и вывод процессов:
mysql> show processlist;
+-----+------------+-------------------+------------+---------+------+-------+------------------+
| Id | User | Host | db | Command | Time | State | Info |
+-----+------------+-------------------+------------+---------+------+-------+------------------+
| 15 | user2 | 127.0.0.1:53188 | user2 | Sleep | 4 | | NULL |
| 16 | user3 | 127.0.0.10:34966 | user3 | Sleep | 2 | | NULL |
| 17 | user3 | 127.0.0.10:34968 | user3 | Sleep | 1221 | | NULL |
| 18 | user2 | 127.0.0.1:53194 | user2 | Sleep | 1221 | | NULL |
| 21 | user2 | 127.0.0.1:53204 | user2 | Sleep | 1220 | | NULL |
| 42 | user | 127.0.0.8:45848 | user | Sleep | 15 | | NULL |
| 47 | user3 | 127.0.0.10:35494 | user3 | Sleep | 1038 | | NULL |
| 48 | root | localhost | NULL | Query | 0 | init | show processlist |
| 120 | user3 | 127.0.0.10:38156 | user3 | Sleep | 1 | | NULL |
| 143 | user3 | 127.0.0.10:38430 | user3 | Sleep | 5 | | NULL |
+-----+------------+-------------------+------------+---------+------+-------+------------------+
10 rows in set (0.00 sec)
Это после того, как я перезапустил сервер mysql. Транзакция имела идентификатор процесса, отличный от 0 ранее, но, похоже, он был создан еще раз, как только сервер перезапустился, с идентификатором = 0.
Я склонен полагать, что это было вызвано отключением сети, и не было никакого реального отката (потому что нет никакого реального процесса).
Есть ли способ, которым я могу эффективно убить эту транзакцию? Спасибо.