1. 程式人生 > >java事務相關知識彙總二

java事務相關知識彙總二

事物的特性:ACID

原子性(Atomicity)

一個事務汲及的操作,要麼全部成功執行,要麼全部回滾

一致性(Consistency)

事務中相關聯的資料在事務操作結束後是一致的,一切都是對的(在分散式場景下可理解為所有節點資料在事務完成後都要是正確的)。例如:銀行有總金額9元,有三個使用者各3元,3個使用者之間無論怎麼轉帳,銀行總額使終是9元。如果當轉帳過程中出現問題,那麼原子性就發揮作用了,那就不轉帳,但資料的結果還是正確的。在這個轉帳的過程中,一定是由一個狀態變為另一個狀態的,即一旦一個事務完成,將來的所有事務都必須基於這個完成後的狀態

一致性分為強一致(A向B轉帳B馬上就可以收到),弱一致(A向B轉帳不保證立即到帳,也不保證什麼時候能到帳),最終一致(弱一致的特殊形式,A向B轉帳,不一定立即到帳,但保證一定能到帳)

隔離性(Isolation)

也稱作獨立性,未完成的事務與事務之間相互不干擾不交錯.例如:一個事務是A向B轉帳3元,別外一個事務也是A向B轉帳3元,其實在執行時它們是相互不干擾的,所以都有可能執行成功,但是由於它們可能是同時得到A 的金額3元,如果兩個事務都執行成功,邏輯上就悲劇了,為了保證資料安全一般我們會加一些鎖機制。此外事務的隔離級別也正是對隔離性各種表現的一種應對方案

永續性(Durabiltiy)

事務一旦提交,資料庫就保證資料的儲存。而且發生故障還可以恢復。也就是說:一旦一個事務完成,就是持久的