JAVA事務——事務特性
事務
什麼是事務?事務通俗的講就是要做的事,在計算機術語中一般指訪問或更新資料庫中資料的一個工作單元。說起事務,那麼就要提到事務的ACID特性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)。可是為什麼說起事務就要提到這四個特性,這四個特性是一個事務必須遵守的標準呢還是對事務的一個期望目標呢,對於這個疑問,我有自己的理解。
事務通俗的將是要做的事,那麼事務的特性就類似於操作規範,按照操作規範來做事就可以儘量避免發生措手不及的問題,最終把事情做好。如果把要做的事拆解一下,通常的步驟就是準備,定好目標,執行,獲得結果。對於計算機事務來說,執行一個工作單元,正確完成對資料庫的訪問或更新,使資料庫從一種狀態轉換成另一種狀態,這個執行過程就是計算機事務。如何從事務開始到結束來保證它的正確性,實現最終目標,這需要靠每個步驟上的正確執行來保證得到最後的正確結果。為了保證每個步驟的正確執行,就有了這四個特性。
事務特性
為了說明事務的特性,舉個視窗購買火車票的例子。首先簡單的分析一下,在購買火車票之前我們需要準備好身份證件和現金,最終結果是我們支付現金並且獲得火車票。但是如果購票業務沒做好,會出現那些情況呢。下面大致列舉一下:
1、乘客得到了火車票卻沒有給售票員付錢。
2、在辦理購票業務的時候提示票已售完。
如果現實中真的出現了這些問題,那是誰都不願意的看到的。因此為了保證購票業務的正確執行,必須把付錢和得到火車票看成一個整體,要麼付錢並得到火車票,要麼退錢結束購票。
而且在購票的過程中,便鎖定客戶的票,不能讓它被其他視窗買走。
例子是這樣一個簡單的例子,但用來說明事務的特性卻是足夠了。
l原子性
原子性即不可分割性,含義是一個事務必須把它產生的所有更改作為一個單獨的工作單元進行提交或者回滾。無論有多少變動都將作為一個整體來處理。怎麼來保證事務的原子性首先在事務開始之前對事務進行拆解,分析哪些動作是必須同時成功,同時失敗的,把這些綁在一起的動作看成一個完整的工作單元,這些動作要步調一致。這其實也就是做好一件事之前的準備階段。用視窗購票的例子來說就是把乘客付錢和得到火車票看成是一個整體。
l一致性
一致性的意思是事務執行的結果必須是使資料庫從一個一致性狀態變到另一個一致性狀態(其實也就意味著在事務期間,對資料的增刪改要符合資料的完整性約束)。像這種比較正式的說法往往是用一個抽象的描述去形容另外一個抽象的東西,結果是更加糊塗了。購票這個例子中,所謂的一致性就是現金必須從乘客的手中扣除,而同時火車票也必須被賣出並交到乘客的手上。所以簡單點說,就是工作單元中每個動作的執行結果必須被落實,不能出現有的成功了而有的失敗了。這就是做好一件事所要達到的既定目標,只要當這件事的所有環節都完成以後才能算這件事完成了。
l隔離性
隔離性,在有的地方也叫獨立性,其實意思都差不多。隔離性指的是各個獨立事務之間的互動程度,是由一致性和併發性共同決定的。像購票的這個例子,如果同時有多名乘客在不同的視窗購票,如果處理不當,很可能在購票的時候會出現兩個或兩個以上的視窗鎖定同一張火車票,並進行售賣的情況,最終不能保證事務的一致性。併發性越低,事務的隔離性越高,一致性也就越高。當提高事務的隔離性的時候,就很可能需要犧牲資料庫的併發性來保證資料的一致性。所以當設定事務的隔離級別的時候,就需要綜合考慮事務的一致性和併發性。因此通俗講事務的隔離性就是指的事情應該怎麼做。關於事務的隔離性以及隔離級別稍後會有詳細說明。
l永續性
永續性指的是一個事務一旦提交,那它對資料庫的更改就應該是永久的,不會因系統的失敗而丟失。當完成購票以後,售票員得到乘客的車票錢,乘客得到售票員給的車票,不能因為售票系統的崩潰就對既有事實進行抵賴,所以從某種程度上來說,永續性也可以指不可抵賴性,簽字蓋章,交易完成。這就是事情的最終結果。
PS:把事務理解成將要做的事,從自己如何確保做好一件事的角度來考慮就比較容易理解事務的幾個特性,畢竟我們自己也做過很多事,也遇到過各種各樣的問題。比如比如專案組成員共同開發專案,一人一個模組,有的人完成了,有的人沒完成,導致專案整體進度出現異常,這些都說明了事務的原子性和一致性。手頭正做著工作,突然上頭又讓做別的工作,雜七雜八的,最終原本的工作不一定能按時完成,包括程式碼的檢出、檢入的時候出現的程式碼衝突和覆蓋等問題,也都體現了事務的隔離性。工作的溝通中,口頭說的容易忘,也很容易需求變更,這時候就需要編寫需求說明,需求分析以及詳細設計等文件以及保留來往郵件作為結果產物作為依據。
相關推薦
JAVA事務——事務特性
事務 什麼是事務?事務通俗的講就是要做的事,在計算機術語中一般指訪問或更新資料庫中資料的一個工作單元。說起事務,那麼就要提到事務的ACID特性,即原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)。
Java中事務的特性
Java-事務學習小結: 事務的特性 原子性:指事務是一個不可分割的工作單位,事務中的操作要麼都發生,要麼都不發生。 一致性:事務必須使資料庫從一個一致性狀態變換到另外一個一致性狀態。轉賬前和轉賬後
事務的特性
沒有 完整性 屬性 整體 需要 -1 arc 修改 數據庫的操作 事務應該具有4個屬性(ACID): 原子性(A):事務作為一個整體被執行,包含在其中的對數據庫的操作要麽全部被執行,要麽都不執行。 一致性(C):事務應確保數據庫的狀態從一個一致狀態轉變為另一個一致狀態。一
java中事務的管理
什麽 特殊情況 數據庫備份 bili 完成 del 同方 ger com 什麽是事務: 事務,就是一組操作數據庫的動作集合。 一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所有的步驟像一個操作一樣被完整地執行,我們稱該事務被提交。由於其中
什麽是事務、事務特性、事務隔離級別、spring事務傳播特性
ons pri table 產生 serializa support enc 不一致 修改 1.什麽是事務: 事務是程序中一系列嚴密的操作,所有操作執行必須成功完成,否則在每個操作所做的更改將會被撤銷,這也是事務的原子性(要麽成功,要麽失敗)。 2.事務特性: 事務特性分為
Java Spring-事務管理概述
dot nat 框架 3.0 信息 commit int 效率 cti 2017-11-11 23:05:39 事務(Transaction):是邏輯上一組操作,要麽全都成功,要麽全都失敗。 一、事務的特性 原子性:事務不可分割 一致性:事務執行的前後,數據完整性保持一致
事務的特性和隔離級別
持久性 atom gre 永久 commit nco 持久 問題 city 1.事務的特性ACID 1)原子性(Atomicity)原子性是指事務是一個不可分割的工作單位,事務中的操作要麽都發生,要麽都不發生。 2)一致性(Consistency)一個事務中,事務前後
python事務四大特性ACID
完成 所有 特性 事務提交 失敗 數據庫 原子性 數據操作 允許 1.原子性 整個事務中的所有操作要麽全部提交成功,要麽全部失敗回滾,對於一個事務來說,不可能只執行其中的一部分操作 2.一致性 一致性就是在沒有提交事務前,不管理對數據操作多少次,真實的數據都不會改動,只有提
講一下 Spring的事務傳播特性
edit span 特性 bsp red rop man tor supported 1. PROPAGATION_REQUIRED: 如果存在一個事務,則支持當前事務。如果沒有事務則開啟 2. PROPAGATION_SUPPORTS: 如果存在一個事務,支持當
資料庫事務、特性及隔離級別
一、事務 事務(Transaction)是併發控制的基本單位。所謂的事務,它是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。而這些邏輯工作單元需要具有原子性, 一致性,隔離性和永續性四個屬性,統稱為ACID特性。 二、事務的4個基本特
Java 資料庫事務和連線池
資料庫事務 Java 本身同樣對資料庫事務處理作了支援,事務針對上篇部落格 JDBC 連線資料庫是涉及到的 Connection 物件,獲取的 Connection 物件預設是自動 commit(提交) 對資料庫做的修改的,由此當事務不能完整執行就會導致資料庫資料修改錯誤(如常見的銀行轉
Applications Manager應用性能透視能力--Java Web事務監控
sql語句執行過程 方法 url follow 結構 端到端 解決問題 ons 監控 如何透視應用的性能? 您想知道究竟是哪個J2EE或Java組件導致了性能瓶頸嗎? 您想知道是哪個SQL查詢降低了應用的運行速度,如何監控JVM性能? 如何快速排查應用性能問題,確保最佳的用
python-----事務的特性?
事務的特性? 1、原子性(Atomicity):事務中的全部操作在資料庫中是不可分割的,要麼全部完成,要麼均不執行。 2、一致性(Consistency):幾個並行執行的事務,其執行結果必須與按某一順序序列執行的結果相一致。 3、隔離性(Isolation):事務的執行不受其他事
資料庫事務的特性與事務隔離級別
資料庫事務的特性與隔離級別 事務 事務簡單的理解就是要在
資料庫事務ACID特性
文章目錄詳解1. 原子性2. 一致性3. 隔離性4. 永續性 ACID特性 資料庫管理系統中事務(transaction)的四個特性(分析時根據首字母縮寫依次解釋):原子性(Atomicity)、一致
資料庫事務的特性、隔離級別以及傳播行為
資料庫事務的特性、隔離級別以及傳播行為 事務是一個操作序列,這些操作要麼都執行,要麼都不執行,它是一個不可分割的工作單位。 一、事務四種特性 1、原子性 事務所包含的操作,要麼全部提交,要麼全部回滾。事務若成功必須全部應用到資料庫,若失敗則不能對
資料庫事務的特性和隔離級別(簡單,易懂,易記,不看後悔)
資料庫事務的四大特性(ACID) 原子性(Atomicity) 事務中的操作要麼全部成功,要麼失敗回滾 一致性(Consistency) 一個事務執行之前和執行之後都必須處於一致性狀態。拿轉賬來說,假設使用者A和使用者B兩者的錢加起來一共是5000,那麼不管A和B之間
事務的特性,事務的隔離級別和傳播行為,為什麼要有隔離級別
事務(Transaction)概念:一個sql語句就是一個事務,事務可以保證一組sql語句要麼都成功,要麼都失敗。事務,就是一組操作資料庫的動作集合。事務是現代資料庫理論中的核心概念之一。如果一組處理步驟或者全部發生或者一步也不執行,我們稱該組處理步驟為一個事務。當所有的步驟
spring事務傳播特性和事務隔離級別
一、事務傳播特性 轉自:http://www.iteye.com/topic/35907 在所有使用 spring 的應用中, 宣告式事務管理可能是使用率最高的功能了, 但是, 從我觀察到的情況看, 絕大多數人並不能深刻理解事務宣告中不同事務傳播屬性配置的的含義, 讓我們
JDBC的事務傳播特性
傳播特性 該特性是保證事務是否開啟,業務邏輯是否使用同一個事務的保證。當事務在傳播過程中會受其影響。其傳播特性包括: 1、Propagation.REQUIRED方法被呼叫時自動開啟事務,