MySQL高階 事務

2021-09-29 10:16:59 字數 3666 閱讀 9770

事務隔離級別

檢視mysql系統的事務隔離級別:

mysql> select @@global.tx_isolation;

+-----------------------+

| @@global.tx_isolation |

+-----------------------+

| repeatable-read |

+-----------------------+

1 row in set (0.00 sec)

檢視mysql會話的事務隔離級別:
mysql> select @@tx_isolation;

+-----------------+

| @@tx_isolation |

+-----------------+

| repeatable-read |

+-----------------+

1 row in set (0.00 sec)

mysql> select @@session.tx_isolation;

+------------------------+

| @@session.tx_isolation |

+------------------------+

| repeatable-read |

+------------------------+

1 row in set (0.00 sec)

設定系統的事務隔離級別:
mysql> set global transaction isolation level read committed;

query ok, 0 rows affected (0.00 sec)

mysql> select @@global.tx_isolation;

+-----------------------+

| @@global.tx_isolation |

+-----------------------+

| read-committed |

+-----------------------+

1 row in set (0.00 sec)

mysql> select @@tx_isolation;

+-----------------+

| @@tx_isolation |

+-----------------+

| repeatable-read |

+-----------------+

1 row in set (0.00 sec)

設定會話的事務隔離級別
mysql> set session transaction isolation level read committed;

query ok, 0 rows affected (0.00 sec)

mysql> select @@global.tx_isolation;

+-----------------------+

| @@global.tx_isolation |

+-----------------------+

| read-committed |

+-----------------------+

1 row in set (0.00 sec)

mysql> select @@tx_isolation;

+----------------+

| @@tx_isolation |

+----------------+

| read-committed |

+----------------+

1 row in set (0.00 sec)

mysql預設是自動提交事務的,檢視autocommit變數:
mysql> select @@autocommit;

+--------------+

| @@autocommit |

+--------------+

| 1 |

+--------------+

1 row in set (0.01 sec)

設定mysql不自動提交事務:
mysql> set autocommit = 0;

query ok, 0 rows affected (0.00 sec)

mysql> select @@autocommit;

+--------------+

| @@autocommit |

+--------------+

| 0 |

+--------------+

1 row in set (0.01 sec)

使用rollback回滾事務
mysql> select * from t1;

empty set (0.00 sec)

mysql> insert into t1 values (51, 3000);

query ok, 1 row affected (0.00 sec)

mysql> select * from t1;

+----+------+

| a | b |

+----+------+

| 51 | 3000 |

+----+------+

1 row in set (0.00 sec)

mysql> rollback;

query ok, 0 rows affected (0.03 sec)

mysql> select * from t1;

empty set (0.00 sec)

mysql>

使用start transaction;或begin;顯示的開啟乙個事務:
mysql> start transaction;

query ok, 0 rows affected (0.00 sec)

mysql> begin;

query ok, 0 rows affected (0.00 sec)

mysql> insert into t1 values (51, 3000);

query ok, 1 row affected (0.00 sec)

mysql> select * from t1;

+----+------+

| a | b |

+----+------+

| 51 | 3000 |

+----+------+

1 row in set (0.00 sec)

mysql> rollback;

query ok, 0 rows affected (0.04 sec)

mysql> select * from t1;

empty set (0.00 sec)

mysql> commit;

query ok, 0 rows affected (0.00 sec)

mysql> select * from t1;

empty set (0.00 sec)

MySQL高階 事務和鎖

什麼是事務 一件事就可以事務,事務就是操作過程合集統稱 事務的特性 原子性 一段事務中,要麼全部完成,要麼都不完成 隔離性 兩個客戶同時操作同樣的事務的解決方案,應用及其廣泛,所以針對以上情況出現了事務的隔離級別 讀未提交 read uncommitted 讀提交 read committed 可重...

mysql 事務管理(高階) 待續

請口述以下問題 什麼是事務到特性,具體說說你到理解 請舉乙個案例描述為什麼要用到事務 賬 事務的隔離級別 待續。a b a給b轉賬100 正常mysql流程 a賬戶b賬戶 a 100 b 100 可能情況 情況a賬戶b賬戶 第一種a 100 b 100 第二種a 100 b第三種 ab 100 第四...

mysql 事務管理(高階) 待續

請口述以下問題 什麼是事務到特性,具體說說你到理解 請舉乙個案例描述為什麼要用到事務 賬 事務的隔離級別 待續。a b a給b轉賬100 正常mysql流程 a賬戶b賬戶 a 100 b 100 可能情況 情況a賬戶b賬戶 第一種a 100 b 100 第二種a 100 b第三種 ab 100 第四...