如何确定MySQL事务中是否有未提交的写操作?

如何确定MySQL事务中是否有未提交的写操作?,mysql,innodb,Mysql,Innodb,我正在使用一个非常复杂的代码库,希望对它如何使用MySQL进行一些反思。(注意,我使用的是InnoDB) 具体地说,在我正在编写的方法中,我希望确定它的opendb连接中是否有任何未完成的(未提交的)写操作 是否有任何MySQL命令或其他方法来检测是否存在未提交的写操作?(或者换一种说法,确定COMMIT是否不会进行修改)。这是一个非常有趣的问题。我认为没有确定的方法来确定发出commit是否会对正在运行的会话产生影响 您可以看到带有show innodb status的事务,但我认为您不能对这

我正在使用一个非常复杂的代码库,希望对它如何使用MySQL进行一些反思。(注意,我使用的是InnoDB)

具体地说,在我正在编写的方法中,我希望确定它的opendb连接中是否有任何未完成的(未提交的)写操作


是否有任何MySQL命令或其他方法来检测是否存在未提交的写操作?(或者换一种说法,确定COMMIT是否不会进行修改)。

这是一个非常有趣的问题。我认为没有确定的方法来确定发出commit是否会对正在运行的会话产生影响

您可以看到带有
show innodb status
的事务,但我认为您不能对这些事务发出commit

INNODB\u TRX
information\u模式中的表将显示当前正在执行的事务:同样,您也无法强制提交它们。您可以通过终止关联进程来回滚它们


如果在存储过程中运行使用的事务,则可以手动处理提交和回滚。您甚至可以使用0来控制何时回滚和何时提交。

谢谢您的建议。从INFORMATION\u SCHEMA.INNODB\u TRX中选择TRX\u ID,其中TRX\u MYSQL\u THREAD\u ID=CONNECTION\u ID()完全符合我的要求。(道具)。然而,当我插入时,该表似乎不会立即更新;在我的测试中,似乎需要约100毫秒。我可以推迟,但我不相信随意的睡眠。是否有一个mysql命令可以阻止这个表的同步?我真的不知道mysql内部有多深。您可能需要深入研究它的源代码才能找到答案。源代码位于GitHub.com上