MYSQL的事務詳解

2021-08-02 07:44:42 字數 1013 閱讀 6423

事務:事務指邏輯上的一組操作,組成這組操作的各個單元,要麼全部成功,要麼全部不成功。

a、mysql引擎是支援事務的

b、mysql預設自動提交事務。每條語句都處在單獨的事務中。

c、手動控制事務

開啟事務:start transaction | begin

提交事務:commit

回滾事務:rollback

原子性:指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。 

一致性:事務必須使資料庫從乙個一致性狀態變換到另外乙個一致性狀態。轉賬前和轉賬後的總金額不變。

隔離性:事務的隔離性是多個使用者併發訪問資料庫時,資料庫為每乙個使用者開啟的事務,不能被其他事務的運算元據所干擾,多個併發事務之間要相互隔離。

永續性:指乙個事務一旦被提交,它對資料庫中資料的改變就是永久性的,接下來即使資料庫發生故障也不應該對其有任何影響。

贓讀:指乙個事務讀取了另乙個事務未提交的資料。

不可重複讀:在乙個事務內讀取表中的某一行資料,多次讀取結果不同。乙個事務讀取到了另乙個事務提交後的資料。(update)

虛讀(幻讀):是指在乙個事務內讀取到了別的事務插入的資料,導致前後讀取不一致。            (insert)

資料庫通過設定事務的隔離級別防止以上情況的發生:

* 1、read uncommitted: 贓讀、不可重複讀、虛讀都有可能發生。

* 2、read committed: 避免贓讀。不可重複讀、虛讀都有可能發生。(oracle預設的)

* 4、repeatable read:避免贓讀、不可重複讀。虛讀有可能發生。(mysql預設)

* 8、serializable: 避免贓讀、不可重複讀、虛讀。

級別越高,效能越低,資料越安全

mysql中:

檢視當前的事務隔離級別:select @@tx_isolation;

更改當前的事務隔離級別:set  transaction  isolation  level 四個級別之一。

設定隔離級別必須在事務之前

MySQL的事務 詳解

1 在springboot中,在service下的方法上,用註解 transactional。2 開啟事務後,一直不提交事務,會自動提交嗎?有沒有設定超時時間?3 以下這種情況,如果新增語句出現錯誤,不會提交,事務是怎麼回滾的?4 一次會話就是一次連線mysql資料庫,那麼在生產中,一次會話是什麼樣...

mysql事務詳解

使用者訪問資料庫時,資料庫會為使用者開啟乙個程序,使用者可以通過這個程序對資料庫進行增 刪 改 查的操作,這個程序就稱為事務。1 原子性 指事務是乙個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生 例如 在乙個事務中,對t1表新增乙個資料,並對t2表刪除乙個資料,這兩步操作要麼都成功,要麼...

MySQL 事務詳解

mysql 事務主要用於處理操作量大,複雜度高的資料。比如說,在人員管理系統中,你刪除乙個人員,你既需要刪除人員的基本資料,也要刪除和該人員相關的資訊,如信箱 文章等等,這樣,這些眾多的資料庫操作語句就構成乙個事務!一般來說,事務必須滿足以下 4 個條件 acid 而我們在學習事務的時候最複雜也是最...