事務:直白的說就是一系列操作在外界看來就是一件事(只有兩種狀態:做好了/沒做,不與其他事有瓜葛)。其特性acid分別是:原子性、一致性、隔離性、永續性。
原子性:一系列操作不可分割,要麼全做完,要麼全部不做。
一致性:本地事務的一致性與分布式事務的一致性存在一定差異,對於本地事務的一致性一般的解釋是滿足資料完整性約束(這些與我們的業務有關,例如資料庫的級聯刪除,在事務中我們應該保證我們該做的事都做了,而不是在事務之外去執行與該事物相關的資料操作),對此我還是有些困惑。
隔離性:事務之間的隔離性,避免交叉事務造成資料的不一致性(分布式事務的一致性與此有點類似,但是造成不一致的原因不同)。例如a事件、b事件都對資料d進行操作,a查詢d得知d=100,然後b查詢d得知d=100,a改變d=d+100,b改變d=d+200,我們的預期是d=100+100+200=400,然而由於併發,如果a事件與b事件交叉執行的話,結果可能是200、300、400。併發導致的問題有:髒讀、不可重複讀、幻讀。mysql對於隔離級別分為多種:讀未提交、讀提交、重複讀、序列化。
本地事務 全域性事務 分布式事務
本地事務 事務隔離級別 select tx isolation tx isolation repeatable read 1 row in set 0.00 sec 開啟事務 執行緒1執行如下。use order db begin update orders set order money orde...
本地事務和分布式事務
1 本地事務acid 和 cap中的ca區別 本地事務 a 原子性 乙個事務中所有操作,要不全部完成,要不全部不完成,事務在執行過程中發生錯誤,會被回滾到事務開始前的狀態,就像這個事務沒有被執行過一樣。c 一致性 事務的一致性指在乙個事務執行之前和執行之後資料庫都必須處於一致性狀態,如果事務成功完成...
分布式事務和本地事務
指一次大的操作由不同的小操作組成的,這些小的操作分布在不同的伺服器上,分布式事務需要保證這些小操作要麼全部成功,要麼全部失敗。從本質上來說,分布式事務就是為了保證不同資料庫的資料一致性。1 資料庫分庫分表 當資料庫單錶一年產生的資料超過1000w,那麼就要考慮分庫分表,具體分庫分表的原理在此不做解釋...