如果DBA殺死了會話,當前的MySQL事務會發生什麼?


假設在事務中間殺死了會話,那麼MySQL將回滾當前的MySQL事務並結束。這意味著當前事務中所做的所有資料庫更改都將被刪除。當會話被殺死時,這被稱為隱式回滾。

示例

假設表“marks”中有以下值

mysql> Select * from marks;
+------+---------+-----------+-------+
| Id   | Name    | Subject   | Marks |
+------+---------+-----------+-------+
|    1 | Aarav   | Maths     |    50 |
|    1 | Harshit | Maths     |    55 |
|    3 | Gaurav  | Comp      |    69 |
|    4 | Rahul   | History   |    40 |
|    5 | Yashraj | English   |    48 |
|    6 | Manak   | History   |    70 |
+------+---------+---------+---------+
6 rows in set (0.00 sec)

現在我們開始一個新的事務,並從表“marks”中刪除一行

mysql> START TRANSACTION;
Query OK, 0 rows affected (0.00 sec)

mysql> Delete from marks where id = 4;
Query OK, 1 row affected (0.00 sec)

在COMMIT或ROLLBACK之前,開啟另一個視窗執行另一個MySQL例項,並執行以下SHOW PROCESSLIST命令:

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 2
   User: root
   Host: localhost:49303
     db: query
Command: Sleep
   Time: 22
  State:
   Info: NULL
*************************** 2. row ***************************
     Id: 3
   User: root
   Host: localhost:49350
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
2 rows in set (0.00 sec)

現在,透過執行以下KILL命令殺死當前事務:

mysql> KILL 2;
Query OK, 0 rows affected (0.00 sec)

現在,當我們返回到當前事務並執行以下COMMIT命令時:

mysql> COMMIT;
ERROR 2006 (HY000): MySQL server has gone away
No connection. Trying to reconnect...
Connection id: 4
Current database: query
Query OK, 0 rows affected (1.01 sec)

上述KILL命令殺死了當前會話,迫使MySQL回滾當前事務中所做的更改。從以下查詢可以觀察到,表“marks”中沒有刪除任何行。

mysql> Select * from marks;
+------+---------+-----------+-------+
| Id   | Name    | Subject   | Marks |
+------+---------+-----------+-------+
|    1 | Aarav   | Maths     |    50 |
|    1 | Harshit | Maths     |    55 |
|    3 | Gaurav  | Comp      |    69 |
|    4 | Rahul   | History   |    40 |
|    5 | Yashraj | English   |    48 |
|    6 | Manak   | History   |    70 |
+------+---------+---------+---------+
6 rows in set (0.00 sec)

更新於: 2020年2月27日

586 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.