Vlad Mihalcea Asked: 2015-04-28 06:00:04 +0800 CST2015-04-28 06:00:04 +0800 CST 2015-04-28 06:00:04 +0800 CST MySQL是否支持查询当前正在运行的事务id 772 PostgreSQL 支持使用如下查询检索当前运行的事务 id: select txid_current(); MySQL有没有这样的等价物? mysql postgresql 2 个回答 Voted Best Answer Marc Alff 2015-04-28T10:50:14+08:002015-04-28T10:50:14+08:00 从 MySQL 5.7 开始,您可以在性能模式中看到当前事务。 见http://dev.mysql.com/doc/refman/5.7/en/events-transactions-current-table.html 现在,要找出THREAD_ID当前连接,使用 SELECT THREAD_ID FROM performance_schema.threads WHERE PROCESSLIST_ID = CONNECTION_ID() 见http://dev.mysql.com/doc/refman/5.7/en/threads-table.html Michael - sqlbot 2015-04-29T12:03:52+08:002015-04-29T12:03:52+08:00 我看不出这会比CONNECTION_ID()……更有用,但是 InnoDB 事务 ID(显示在 中SHOW ENGINE INNODB STATUS)可以使用这个: SELECT trx_id FROM information_schema.innodb_trx WHERE trx_mysql_thread_id = CONNECTION_ID(); 这在 MySQL 5.5 及更高版本中可用(并且可能与 5.1 上的 InnoDB 插件一起使用),但在您的事务实际上与 InnoDB 进行某种交互之前,事务不会在这里变得可见。
从 MySQL 5.7 开始,您可以在性能模式中看到当前事务。
见http://dev.mysql.com/doc/refman/5.7/en/events-transactions-current-table.html
现在,要找出
THREAD_ID
当前连接,使用见http://dev.mysql.com/doc/refman/5.7/en/threads-table.html
我看不出这会比
CONNECTION_ID()
……更有用,但是 InnoDB 事务 ID(显示在 中SHOW ENGINE INNODB STATUS
)可以使用这个:这在 MySQL 5.5 及更高版本中可用(并且可能与 5.1 上的 InnoDB 插件一起使用),但在您的事务实际上与 InnoDB 进行某种交互之前,事务不会在这里变得可见。