我有一个简单的用例来解决。想象一下有人告诉你“嘿,这个特定的查询集不是事务性的!”你的工作就是否认这一说法。怎么可能这样做?
假设:
INSERTs
mysql client
和所有权限MySQL
服务器InnoDb
答案 0 :(得分:0)
输出中有一个交易部分:
SHOW ENGINE INNODB STATUS\G
看起来像(来自我当地的MySQL目前没有运行任何查询):
TRANSACTIONS
------------
Trx id counter 900
Purge done for trx's n:o < 0 undo n:o < 0
History list length 0
LIST OF TRANSACTIONS FOR EACH SESSION:
---TRANSACTION 0, not started
MySQL thread id 47, OS thread handle 0x7fc8b85d3700, query id 120 localhost root
SHOW ENGINE INNODB STATUS
我不知道您是否可以主动监控这些信息,以便您可以在3次插入操作时完全看到它。你可以在这里使用你的最后一颗子弹(使用慢速查询)......
另外MySQL有命令计数器。可以通过以下方式访问此计数器:
SHOW GLOBAL STATUS LIKE "COM\_%"
每次执行命令都会增加与之关联的计数器。与事务相关的计数器为Com_begin
,Com_commit
和Com_rollback
,因此您可以执行代码并监控这些计数器。