歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Java基礎——事務

一、事務

簡單點說,事務就是一件事情。所有與事務相關的內容都是圍繞這一件事情展開的。

二、事務的特性:ACID

A:Atomicity(原子性),事務必須是一個不可分割的整體。

C:Consistency(一致性),執行完數據庫操作後,數據不會被破壞。如:從 A 賬戶轉賬到 B,要保證 A 賬戶扣錢後,B 賬戶能增加對應的錢數。

I:Isolation(隔離性),多個人對同一條數據同時進行操作時,若不加以控制,會產生非常大的麻煩。而這個控制就是指隔離性。

D:Durability(持久性),若執行一條 insert 語句,數據庫必須保證一條數據永久地存放到數據庫中。

事務的 ACID 特性,都是為了保證數據的一致性。隔離性是保證事務一致性的手段。

三、事務的隔離級別(Transanction Isolation Level)

上面說過,事務的隔離性。所說的控制,就是指這裡的隔離級別。

(1)READ_UNCOMMITED:讀未提交

(2)READ_COMMITED:讀已提交

(3)REPEATABLE_READ:可重復讀

(4)SERIALIZABLE:

從上往下,並發性越來越差,安全性越來越高。

四、事務中存在的問題

(1)髒讀——事務 A 讀取了事務 B 未提交的數據,並在這個基礎上又做了其他操作。

(2)不可重復讀——事務 A 讀取了事務 B 已提交的更改數據。

(3)幻讀——事務 A 讀取事務 B 已提交的新增的數據。

不論是在什麼情況下,髒讀都是不被允許的。

五、事務的隔離級別與事務中存在的問題的對應關系

其實事務的隔離級別的存在本身就是為了解決事務中出現的問題。

MySQL 默認的隔離級別為 READ_COMMITED。

需要提醒的是,這裡所說的事務隔離級別規范是 JDBC 提出來的。

到數據庫級,隔離級別是通過鎖來控制的,當插入數據時,鎖定表,叫“鎖表”。當更新數據時,鎖定行,叫“鎖行”。

六、總結為一張圖

Copyright © Linux教程網 All Rights Reserved