什麼是事務?

2021-10-07 10:24:17 字數 1649 閱讀 4327

什麼是事務:

是資料庫操作的最小單元,是作為單個邏輯工作的執行的一系列操作,要成功都成功,要失敗都失敗

事務的特性(acid):

原子性(atomicity)(以事務為單位  乙個事務是乙個原子操作單元)      一致性(correspondence)    (資料保持一致性)

隔離性 (isolation)(多個事務之間的操作互不影響)                         永續性(durability)    (資料儲存成功不可修改)

事務併發帶來的問題:

更新丟失       兩個事務(t1,t2)對同乙個資料讀取並修改 ,第二個事務覆蓋第乙個事務 的提交結果,導致第乙個事務的修改被丟失

髒讀       (讀取的值和資料庫中存在值是不同的   針對於未提交資料)   張三的工資5000    事務a將工資改為8000   事務b正在讀取資料,讀取值為8000 此時事務a因為異常回滾,導致資料修改為5000  事務b讀取的是8000 讀取值和資料庫中值不同   

非重複讀    (針對於資料本身  已提交事務)   同乙個事務a內前後讀取的結果不一致    事務a  一次查工資      5000      執行一些別的業務  同時有乙個事務b修改資料為 8000     事務a 還要在查一次工資    8000       (不可重複讀對應的是update)

幻讀      針對其他提交前後,讀取資料條數的對比    事務a查詢工資為5000的人有10個 此時事務b插入一條資料      事務a再次讀取工資為5000的員工為11  (同乙個事務一次和兩次資料不同)   (幻讀對應的是insert)

spring 事務的隔離級別有幾種

mysql預設的隔離級別是 可重複讀    orcal 和sqlserver的預設隔離級別是讀已提交    

讀已提交產生的不可重複讀 幻讀      讀未提交產生的髒讀    

事務的傳播性7種:

* 保證同乙個事務中

(required)      propagation_required 代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就新建乙個事務,就是預設的事務傳播設定。(預設)

(supports)     propagation_supports 代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就以非事務方式執行。    

(mandatory)  propagation_mandatory 代表如果已經存在乙個事務,就加入到這個事務中。如果當前沒有事務,就以丟擲異常

* 保證沒有在同乙個事務中

propagation_requires_new 代表新建事務,如果已經存在乙個事務,就把這個事務掛起

propagation_not_supported 代表如果已經存在乙個事務,就把這個事務掛起,並以非事務方式執行。

propagation_never 代表如果已經存在乙個事務,就丟擲異常。如果當前沒有事務,以非事務方式執行。

propagation_nested 如果當前事務存在,則巢狀事務執行

餘生很貴,請別浪費,迎風而上,不畏艱難,永遠要活給自己看,而且笑容要特別燦爛,不要在乎別人的指指點點,只要做好你自己,如果沒有特別的幸運,那就請特別的努力!

什麼是事務

一 什麼是事務 事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,乙個事務中的一系列的操作要麼全部成功,要麼乙個都不做。事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中乙個步驟失敗,將發生回滾操作,撤消撤消之...

什麼是事務

所謂事務,就是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。開啟用begin,關閉用commit 事務的四大特性 acid 1.原子性a 做一件事情要麼成功要麼不成功 2.一致性c 你中間除了問題也不會出現這個資料丟了的情況 3.隔離性i 兩個sql語句之間不會相互影響...

什麼是事務

事務就是指一系列的資訊交換操作,這整個過程稱為事務,這一系列的資訊交換是乙個不可分割的整體,也就是說,要麼所有的資訊交換都完成,要麼一次交換都不進行 要麼完全成功,要麼完全失敗 transaction trans ac tion tr n z k n n.交易,執行,辦理 a atomicity 原...