我已经浏览了Google,但找不到任何相关内容.基本上,我想掌握长期运行的交易.
现在,我将浏览information_schema.INNODB_TRX或查看show engine innodb status的输出以查找trx_id,然后打开general_logs以查看正在运行的所有查询.
有没有办法,我可以使用jdbc或hibernate在我的代码中获取此transaction_id,以便我可以在我的服务器日志中记录它?
解决方法:
使用PostgreSQL,您只需运行此本机查询即可获取当前的事务ID:
Number transactionId = (Number) session
.createSQLQuery("select txid_current()")
.uniqueResult();
对于MySQL,you need to run 5.7 or later:
Number transactionId = (Number) session
.createSQLQuery(
"SELECT GTID " +
"FROM events_transactions_current e " +
"JOIN performance_schema.threads t ON e.THREAD_ID = t.THREAD_ID " +
"WHERE t.PROCESSLIST_ID = CONNECTION_ID()")
.uniqueResult();
或者对于MySQL 5.5:
Number transactionId = (Number) session
.createSQLQuery(
"SELECT trx_id " +
"FROM information_schema.innodb_trx " +
"WHERE trx_mysql_thread_id = CONNECTION_ID()")
.uniqueResult();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。