問:什么是MySQL事務?如何查詢MySQL中正在運行的事務?
答:MySQL事務是指一組被視為單個邏輯單元的SQL語句,這些語句要么全部執行,要么全部不執行。如果其中的任何語句執行失敗,整個事務都將回滾到初始狀態。MySQL事務可以確保數據的完整性以及數據一致性。
要查詢MySQL中正在運行的事務,可以使用以下命令:
SHOW ENGINE INNODB STATUS\G
noDB引擎的狀態信息,其中包括當前正在運行的事務的詳細信息。在返回的信息中,可以查找“TRANSACTIONS”部分,其中包含了所有正在運行的事務的信息。
例如,以下是一個返回信息的示例:
------------
TRANSACTIONS
------------ter 0 422edo:o< 0 0gth 2
LIST OF TRANSACTIONS FOR EACH SESSION:oto 1234, OS thread id 1234567890
MySQL thread id 1, query id 1234 localhost user
SHOW ENGINE INNODB STATUSo 5678, OS thread id 1234567890
MySQL thread id 2, query id 5678 localhost usern = 'value' WHERE id = 1
在以上示例中,可以看到有一個活動事務,其ID為“0 421”,正在執行一條UPDATE語句。這個事務已經運行了5秒鐘,并且使用了進程號“5678”。如果需要終止該事務,可以使用以下命令:
KILL QUERY 5678
執行以上命令后,MySQL將立即終止該事務的執行。注意,這個命令只會終止查詢,而不會回滾事務。如果需要回滾事務,可以使用以下命令:
ROLLBACK;
執行以上命令后,MySQL將回滾正在運行的事務,將其恢復到最初的狀態。