iPAS 備考專區 登入

iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用・114 年第二次・L22・第 7 題

資料庫 ACID 的原子性是什麼?

原題

在資料庫的 ACID 特性中,下列何者為「原子性(Atomicity)」的正確定義?

白話

資料庫有一組保護資料正確性的特性,縮寫叫 ACID。其中一個叫「原子性(Atomicity)」。

問你:「原子性」的正確定義是什麼?

一句話總結

原子性(Atomicity)的定義:一筆交易裡的所有操作,要嘛全部成功,要嘛全部失敗,沒有「做一半」的中間狀態。

情境

先感受問題:銀行轉帳的兩步驟

阿仁用嘉誠銀行 App 轉帳 1 萬元給朋友小薇:

步驟 1:阿仁帳戶 -10,000 元

步驟 2:小薇帳戶 +10,000 元

如果在步驟 1 完成、步驟 2 執行前,伺服器突然當機怎麼辦?

  • 沒有原子性保護:阿仁少了 1 萬,小薇沒有收到,錢憑空消失。
  • 有原子性保護:步驟 2 失敗 → 整筆交易自動回滾(Rollback)→ 步驟 1 也取消 → 阿仁帳戶回到原狀,就像什麼都沒發生。

原子性保證:轉帳這個「交易」是一個不可分割的整體,中途失敗就全部取消。

舊方法

沒有原子性保護時,資料庫會有什麼問題

  1. 資料不一致:轉帳做一半失敗,帳本裡一邊少錢一邊沒加錢,總金額對不上。
  2. 難以回復到正常狀態:不知道哪些步驟成功、哪些失敗,手動修復非常困難。
  3. 複雜業務邏輯的崩潰點更多:一個電商訂單可能包含「扣庫存 + 扣款 + 建訂單記錄」三個步驟,任一步驟失敗都可能造成髒資料。
  4. 難以保證審計正確性:財務報告、交易紀錄必須每一筆都完整,部分失敗的交易會讓帳目難以核對。
  5. 系統重啟後狀態不明:不確定上次執行到哪一步,系統重啟後不知道要從哪裡恢復。

新方法

原子性:全部做完,或全部不算

原子性的設計靈感來自「原子」(Atom)這個概念:最小的不可分割單位。一筆資料庫交易就是一個「原子」,裡面有幾個操作,要嘛全部執行成功,要嘛就像從來沒執行過。

技術實作:資料庫透過「交易日誌(Transaction Log)」記錄每個步驟,一旦有步驟失敗,就把已完成的步驟全部回滾(Rollback),回到交易開始前的狀態。

口訣:All or Nothing,全部成功,或全部取消。

這就是選項 C 講的:交易不可分割,需完全成功或完全失敗。

錯選項

為什麼其他選項是錯的

A所有資料欄位必須為相同型別

字面在說什麼

同一張表的所有欄位,資料型別必須一樣(都是整數,或都是字串)。

為什麼不對

這不是 ACID 的任何一條。一張表的欄位可以有不同型別(ID 是整數、姓名是字串、金額是浮點數)。這個說法完全跟資料庫交易的概念無關,更不是原子性的定義。

誰會選錯

對資料庫概念不熟,以為原子性在講「資料的最小單位是型別一致」的人。原子性是關於交易操作的完整性,不是資料型態的規範。

B每次交易需以批次方式執行

字面在說什麼

交易要批次(Batch)執行,不能一個一個做。

為什麼不對

「批次執行」是效能優化的做法(一次提交多個操作減少 I/O),跟原子性完全無關。原子性說的是「一筆交易內的多個操作要嘛全做要嘛全不做」,不是說要批次執行。

誰會選錯

把「批次」和「原子」混為一談的人。記住:「批次」是效能概念,「原子性」是正確性概念,兩個是不同維度的東西。

D系統會自動同步交易資料至所有節點

字面在說什麼

一筆交易成功後,資料會自動同步到分散式系統的所有伺服器節點。

為什麼不對

這描述的是分散式系統的「一致性(Consistency)」或「複製(Replication)」,不是 ACID 的原子性。ACID 的原子性說的是單一交易的 All or Nothing,跟多節點同步無關。

誰會選錯

把「分散式一致性」跟「ACID 原子性」搞混的人。CAP 定理裡的一致性(Consistency)跟 ACID 的一致性是不同的概念,更不是原子性。

變形題

同個考點下次怎麼變形

延伸

想再往下看,這 5 個

答案、題目或解析有問題?回報這題

出處:iPAS 經濟部產業人才能力鑑定 ・ 114 年第二梯次 iPAS AI 應用規劃師 中級 科目二 大數據處理分析與應用 第 7 題

看官方原文 PDF

原題 © 經濟部產業發展署,AITerms.tw 僅作教學解析使用,本站解析以 CC BY-NC-SA 4.0 授權。