[英]How to check verify that SQL query was ran in transaction?
我有一个简单的用例要解决。 假设有人告诉您“嘿,这组特定的查询不是事务性的!” 而您的工作就是拒绝该声明。 怎么可以这样呢?
假设:
INSERTs
mysql client
和所有特权 MySQL
服务器与InnoDb
一起使用 在以下输出中有一个交易部分:
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
,因此您可以执行代码并监视这些计数器。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.