什么是原子性操作呢?
下面我舉一個例子來說明一下:
A想要從自己的帳戶中轉1000塊錢到B的帳戶里。那么從A開始轉帳,到轉帳結束的這一個過程,稱之為一個事務。在這個事務里,要做如下操作:
- 1. 從A的帳戶中減去1000塊錢。如果A的帳戶原來有3000塊錢,現在就變成2000塊錢了。
- 2. 在B的帳戶里加1000塊錢。如果B的帳戶如果原來有2000塊錢,現在則變成3000塊錢了。
如果在A的帳戶已經減去了1000塊錢的時候,忽然發生了意外,比如停電、斷網什么的,導致轉帳事務意外終止了,而此時B的帳戶里還沒有增加1000塊錢。那么,我們稱這個操作失敗了,要進行回滾(ROLLBACK)。回滾就是回到事務開始之前的狀態,也就是回到A的帳戶還沒減1000塊的狀態,B的帳戶的原來的狀態。此時A的帳戶仍然有3000塊,B的帳戶仍然有2000塊。
在運維知識學習中,經常涉及到 原子性 和 原子性操作 的概念,
如果把一個事務可看作是一個程序,它要么完整的被執行,要么完全不執行,這種要么操作100%完成,要么無操作的特性,就叫做原子性。
