gpt4 book ai didi

mysql - 我可以在 InnoDB 事务期间检索挂起的查询吗?

转载 作者:可可西里 更新时间:2023-11-01 06:33:50 27 4
gpt4 key购买 nike

我开始交易。

然后我需要回滚它。

我能否以某种方式获得以这种方式“丢弃”的查询列表?

(ps:当然我可以事先记录它们;我想知道这是否可以以更“自然”的方式完成)

最佳答案

如果你使用的是最新的 MySQL 5.1,这应该可以工作:

SHOW ENGINE INNODB STATUS 包括 InnoDB 引擎的事件事务列表。每个都以事务 ID 和进程 ID 为前缀,看起来有点像这样:

---TRANSACTION 0 290328284, ACTIVE 0 sec, process no 3195, OS thread id
34831 rollback of SQL statement
MySQL thread id 18272
<query may be here>

MySQL 线程 ID 将对应于 session 的 CONNECTION_ID(),您可以从 SHOW FULL PROCESSLIST 或 information_schema.processlist 中获取该 ID,因此您可以确定哪个事务是您的。您必须解析文本,并从中解析查询(如果存在)。

如果这还不够,您可以在每个 ROLLBACK 语句之前尝试类似 SET @PROGRESS = @PROGRESS + 1 的操作,然后在查询结束时从 DUAL 中选择 @PROGRESS 以了解事务在它命中之前走了多远回滚。

关于mysql - 我可以在 InnoDB 事务期间检索挂起的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3172127/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com