如何理解數據庫中事務的原子性?


什么是原子性,什么是原子性操作?

舉個例子:

A想要從自己的帳戶中轉1000塊錢到B的帳戶里。那個從A開始轉帳,到轉帳結束的這一個過程,稱之為一個事務。在這個事務里,要做如下操作:

  •  1. 從A的帳戶中減去1000塊錢。如果A的帳戶原來有3000塊錢,現在就變成2000塊錢了。
  •  2. 在B的帳戶里加1000塊錢。如果B的帳戶如果原來有2000塊錢,現在則變成3000塊錢了。

如果在A的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電什么的,導致轉帳事務意外終止了,而此時B的帳戶里還沒有增加1000塊錢。那么,我們稱這個操作失敗了,要進行回滾。回滾就是回到事務開始之前的狀態,也就是回到A的帳戶還沒減1000塊的狀態,B的帳戶的原來的狀態。此時A的帳戶仍然有3000塊,B的帳戶仍然有2000塊。

我們把這種要么一起成功(A帳戶成功減少1000,同時B帳戶成功增加1000),要么一起失敗(A帳戶回到原來狀態,B帳戶也回到原來狀態)的操作叫原子性操作。

如果把一個事務可看作是一個程序,它要么完整的被執行,要么完全不執行。這種特性就叫原子性。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM