程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> JAVA綜合教程 >> Java基礎——事務,java事務

Java基礎——事務,java事務

編輯:JAVA綜合教程

Java基礎——事務,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 提出來的。

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

六、總結為一張圖

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved