原子性和一致性有什麼區別?它看起來對我來說都是用不同的詞說同一件事。數據庫原子性一致性
原子性
交易的所有任務都執行,或者都不是。沒有部分交易。例如,如果事務開始更新100行,但系統在20次更新後失敗,則數據庫將對這20行進行更改。
一致性
該交易需要從一個一致的狀態數據庫,以另一種一致的狀態。例如,在借記儲蓄賬戶和貸記支票賬戶的銀行交易中,失敗不會導致數據庫僅記入一個賬戶,這將導致不一致的數據。
原子性和一致性有什麼區別?它看起來對我來說都是用不同的詞說同一件事。數據庫原子性一致性
原子性
交易的所有任務都執行,或者都不是。沒有部分交易。例如,如果事務開始更新100行,但系統在20次更新後失敗,則數據庫將對這20行進行更改。
一致性
該交易需要從一個一致的狀態數據庫,以另一種一致的狀態。例如,在借記儲蓄賬戶和貸記支票賬戶的銀行交易中,失敗不會導致數據庫僅記入一個賬戶,這將導致不一致的數據。
原子性的確在說每個事務都是全或全無,這意味着要麼全部要麼全部都不執行,並且沒有部分操作。
但是,一致性說明如何確保任何事務將數據庫從一個有效狀態轉移到另一個有效狀態。寫入數據庫的任何數據必須根據所有定義的規則有效,包括但不限於約束,級聯,觸發器及其組合。 這基本上意味着只有有效的狀態被寫入數據庫,並且如果事務沒有違反數據一致性,或者如果它違反,就會被執行。
希望它能爲你解決問題。
簡單解釋對於一致性:如果數據庫中的字段類型是Integer,它應該只接受Integer值而不是某種其他類型。如果要在該字段中存儲其他類型,則會違反一致性。在這種情況下,事務將回滾。
原子性:聲明
一羣只取它也可以insert語句100條語句的示例,如有的話失敗而處理應該恢復剩餘的說法,這意味着數據庫應該回到原來的州。
塊引用
自動提交=假
try{
statement one ;
statement two ;
`enter code here`
`enter code here`
`enter code here`
statement three;
}
catch(){rollback;}
finally(){commit;} t
一致性: 如果你想插入日期到需要被滿足約束條件,級聯數據庫,觸發器一樣,而您試圖將數據插入數據庫,但該表具有主鍵約束,因此您計劃插入的數據應該滿足主鍵約束。
隔離: 如果兩個進程在數據庫上運行假設一個正在讀取,另一個正在將數據寫入數據庫。 讀線程應該只讀提交的數據,不應該在內存中的數據
耐久性: 一旦提交到數據庫中的交易數據應該是相同的階段,它應該不會影響電源故障或系統崩潰的任何其他
非原子,一致:部分事務可能會使系統處於一致狀態。原子不一致:系統的兩部分可能會保持原子性而不一致(交易記錄在一個而不是另一個部分)。 – nhahtdh