日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

原子性和一致性的区别是什么?

發布時間:2023/12/10 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 原子性和一致性的区别是什么? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

注:

重度參考了:https://www.zhihu.com/question/30272728/answer/72476703(講的非常好,邏輯清晰)

輕度參考了:https://www.cnblogs.com/fjdingsd/p/5273008.html(概念也比較清晰,只不過沒有對比著這兩個特性講)

?

概念

原子性:一個事務內的操作,要么同時成功,要么同時失敗

一致性:一個事務必須使數據庫從一個一致性狀態變換到另一個一致性狀態

?

對于一致性,知乎鏈接中內容如下:

從這段話的理解來看,所謂一致性,即,從實際的業務邏輯上來說,最終結果是對的、是跟程序員的所期望的結果完全符合的

?

重點

一致性是基礎,也是最終目的,其他三個特性(原子性、隔離性和持久性)都是為了保證一致性的

在比較簡單的場景(沒有高并發)下,可能會發生一些數據庫崩潰等情況,這個時候,依賴于對日志的 REDO/UNDO 操作就可以保證一致性

而在比較復雜的場景(有高并發)下,可能會有很多事務并行的執行,這個時候,就很可能導致最終的結果無法保證一致性,比如(內容來自知乎鏈接):

即,這個時候,原子性不能保證一致性。因為從單個事務的角度看,不管是事務 1 還是事務 2,它們都保證的原子性(單個事務內的所有操作全部成功了),但最終,它們并沒有保證數據庫的一致性(因為從邏輯上說,賬戶 A 應該增加了 200 元,而不是 100 元)

所以,為了保證并發情況下的一致性,又引入了隔離性的概念

?

隔離性:即事務之間感知不到彼此的存在,就好像只存在本身一個事務一樣

而對于怎樣實現隔離性,又涉及到了樂觀鎖和悲觀鎖的概念(這兩個概念還不大懂)

?

小小引申:

不考慮隔離性的時候,可能導致臟讀、幻讀和不可重復讀的問題(這些問題,其實就是導致無法保證一致性的幾種情況)

而隔離級別的概念,就是為了解決上述三個問題

總結

以上是生活随笔為你收集整理的原子性和一致性的区别是什么?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。