提问人:João Salavisa 提问时间:10/3/2019 最后编辑:João Salavisa 更新时间:10/7/2022 访问量:1602
AWS RDS Mysql 按 ID 终止事务(不带thread_id)
AWS RDS Mysql kill transaction by ID (without thread_id)
问:
我目前遇到了一些长时间运行的事务的问题,这些事务将锁锁定到我无法杀死的表中的一行。
Innodb_trx包含以下信息 - 特别注意 thread_id = null;
select * from information_schema.innodb_trx\G
*************************** 2. row ***************************
trx_id: 153261728
trx_state: RUNNING
trx_started: 2019-10-02 10:05:42
trx_requested_lock_id: NULL
trx_wait_started: NULL
trx_weight: 5
trx_mysql_thread_id: 0
trx_query: NULL
trx_operation_state: NULL
trx_tables_in_use: 0
trx_tables_locked: 2
trx_lock_structs: 3
trx_lock_memory_bytes: 1136
trx_rows_locked: 1
trx_rows_modified: 2
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: 0
trx_is_read_only: 0
trx_autocommit_non_locking: 0
和
show engine innodb status\G;
------------------
---TRANSACTION 153261728, ACTIVE (PREPARED) 27716 sec recovered trx
3 lock struct(s), heap size 1136, 1 row lock(s), undo log entries 2
---TRANSACTION 96697370, ACTIVE (PREPARED) 988082 sec recovered trx
0 lock struct(s), heap size 1136, 3 row lock(s), undo log entries 3
有没有办法像这样终止/停止/回滚交易?
答:
0赞
David542
10/7/2022
#1
我有一个存储的查询,我通常用它来在rds上执行此操作,如下所示:
SELECT CONCAT('CALL mysql.rds_kill( ',id,');') kill_cmd, p.*
FROM information_schema.processlist p WHERE DB='yourDb';
这将为所有活动进程生成 kill 语句。在你的例子中,你只需要一个(或几个)id,所以你可以从那里根据id复制粘贴你想要的语句。例如,您可以运行以下命令来终止进程:kill
1991542
CALL mysql.rds_kill(1991542);
评论
0赞
Ruslan
5/31/2023
OP 指出该进程未显示在 processlist 中
评论
SHOW FULL PROCESSLIST
CONNECTION_ID()