什么是交易没有在SHOW ENGINE INNODB状态中启动?

时间:2012-06-28 11:29:08

标签: mysql innodb database-deadlocks

以下是“SHOW ENGINE INNODB STATUS”的几行回应;


TRANSACTIONS
------------
Trx id counter 58EC54C6
Purge done for trx's n:o < 58EC54C3 undo n:o < 0
History list length 2420
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 58EC51E6, not started
MySQL thread id 520131, OS thread handle 0x7f0db930e700, query id 24011015 108.89.56.87 xyz
---TRANSACTION 58EC527E, not started
MySQL thread id 520061, OS thread handle 0x7f0dbb596700, query id 24011370 108.89.56.87 xyz
---TRANSACTION 58EC53AC, not started
MySQL thread id 520065, OS thread handle 0x7f0dbb28a700, query id 24012094 108.89.56.87 xyz
---TRANSACTION 58EC50CE, not started
MySQL thread id 520109, OS thread handle 0x7f0dbba69700, query id 24010431 108.89.56.87 xyz    ---TRANSACTION 58EC51E8, not started
MySQL thread id 520123, OS thread handle 0x7f0dbb4d3700, query id 24011016 108.89.56.87 xyz    ---TRANSACTION 58EC51D0, not started
MySQL thread id 520072, OS thread handle 0x7f0db865c700, query id 24010944 108.89.56.87 xyz
---TRANSACTION 58EC5184, not started
MySQL thread id 520058, OS thread handle 0x7f0db8c74700, query id 24010807 108.89.56.87 xyz

我想知道这个'交易转换,未启动'是什么意思?是否有任何查询无法执行?

我正在使用innodb。我也不是手动启动交易。它正在考虑自动交易,因为我在具有批量数据的表上发布更新查询。并且你可以在5-10分钟内在这张单独的表上获得mysql更新查询的hundreads。

请让我知道“交易未开始”究竟是什么意思?它是显示失败的查询还是仅显示正常日志?

提前致谢!

2 个答案:

答案 0 :(得分:11)

线程(〜连接)第一次需要在事务期间锁定某些数据时,会创建事务“对象”(~context)。事务“对象”在事务结束时不会被销毁,如果新事务由同一个线程启动,它将被重用。

显示为not started的每个事务都是一个事务“对象”,该事务由一个事务中的当前的线程拥有(更准确地说,它不需要维护一个单独的上下文交易)。

thread id是发布Id时在SHOW PROCESSLIST列中显示的{{1}}。

这没什么可担心的,实际上这是正常行为。

答案 1 :(得分:2)

我在网上找到了这个:

  

Innodb何时开始交易?

     

2011年1月11日Peter Zaitsev

     

评论inShare1

     

Innodb何时开始交易?答案看起来很明显 - 当您发出“BEGIN”命令时。然而,这是错误的答案   引擎点。运行“SHOW INNODB STATUS”,你会看到“没有   开始“交易清单中的状态。

来自here

  

对于MySQL的每个连接,如果此连接没有活动的Innodb事务,则将启动以太网未启动状态,   如果交易有效,则为ACTIVE。注意事务可以是活动的   即使连接处于“睡眠”阶段 - 如果它是多个声明   交易。 Innodb还将打印OS thread_id和进程ID   如果你想使用gdb连接到运行可能会有所帮助   mysqld用于故障排除和类似的事情。也   报告交易状态,基本上是交易   这样做可以“获取行”,“更新”和其他几个   值。

source