Skip to Content

什麼是資料庫 ACID?

ACID 是資料庫四大特性的縮寫:原子性、一致性、隔離性與耐久性。它通常與關聯式資料庫有關,但 NoSQL(非關聯式)資料庫也可以遵循 ACID 規則。ACID 交易在市場上許多常見的資料庫引擎中很常見,它們可確保讀寫動作不會干擾資料的完整性。

什麼是資料庫 ACID?

遵循 ACID 最佳實務的資料庫具有以下特性:

  • 原子性:防止資料遺失、孤立的記錄,以及部分原子化交易。具有原子性的資料庫提供“全部或完全”的交易,這樣一來,如果交易的一部分在中途失敗,您就不會遺失資料。
  • 一致性:ACID 資料庫的表格限制要求所有交易都以一致的格式儲存資料。
  • 隔離:ACID 資料庫透過隔離資料和逐一執行交易,確保交易不會回傳髒的讀寫資料。
  • 耐用性:系統故障(例如停電)會干擾交易,因此 ACID 資料庫可確保故障轉移能防止關鍵事件造成資料遺失。

原子性

現代資料庫交易有超過一個步驟可以完成記錄。例如,客戶可能會建立訂單,因此儲存的程序會使用 INSERT 陳述式將記錄加入訂單和 products_ordered 表格中。如果新增記錄至訂單表格失敗,則您不想新增記錄至 products_ordered 表格。這會建立孤立的記錄。

借助原子學,資料庫會在故障時復原所有交易,以維持資料一致性並避免毀損。只有在交易中的所有步驟都成功完成時,才會儲存資料。Atomicity 可避免資料毀損、資料遺失和孤立的記錄。

一致性

關聯式資料庫有限制,只允許儲存特定類型的資料。NoSQL 資料庫以自己的設定格式儲存資料。例如,如果您指定只能將十進位數字儲存在順序總計欄中,則嘗試儲存字串將導致失敗。維持資料的一致性,讓開發人員在使用資料集時能享有已知的價值。

資料庫的一致性意味著資料可以預測,這意味著如果您為任何特定記錄提取資料,就會得到預期結果。使用順序表範例,您知道若查詢從順序總計欄中擷取數值,您將會收到十進位值。

隔離

當使用者在特定時間點執行查詢時,資料庫也會對數值進行變更時,就會發生讀髒寫。例如,如果您想知道當月所有訂單的總額,當您在訂單總額更新時讀取資料,可能會得到不正確的結果。如果資料是在前一個更新聲明可以執行之前讀取的,寫入動作也會發生同樣的情況。 

骯髒的讀寫資料可能會損壞資料,並破壞資料完整性。獨立交易會逐一執行對帳單,因此即使每天交易數以百萬計,資料仍能維持一致、不中斷。隔離的交易可以鎖定記錄、進行變更,然後放行下次交易的記錄。

耐用性

即使系統故障,結構化和非結構化資料庫仍必須在交易完成後持續永久儲存資料。交易日誌和基礎架構故障也必須實施,但資料庫本身必須能夠持續儲存資料,且不會造成任何資料毀損。資料庫引擎有自己的策略和故障轉移技術,但管理員必須能夠依靠它們來復原資料。

例如,停電可能會中斷交易。無論管理員需要復原交易或復原資料,資料庫都必須能夠處理故障。對於大多數管理員而言,故障轉移也以備份和備援方式處理。ACID 可協助組織制定更大規模的災害復原策略。 

結論

任務關鍵型資料庫需要 ACID 屬性來支援企業應用程式。ACID 特性對於資料完整性至關重要,可確保您的資料能夠被任意數量的應用程式擷取和使用。管理員仍需備份,確保資料庫伺服器運作順暢,但擁有 ACID 屬性對於業務永續性至關重要。

11/2025
Minimize Cyber Downtime with Resilient Storage | Everpure
Protect critical workloads with Everpure cyber resilience, delivering built-in security, threat detection, and rapid recovery to minimize downtime.
解決方案簡介
5 頁

查看重要資訊與活動

影片
觀看影片:企業級資料雲端的價值。

Charlie Giancarlo 討論管理為何管理資料才是未來趨勢,而非儲存設備。發掘整合式做法如何革新企業級 IT 作業。

立即觀看
資源
傳統儲存裝置無法驅動未來。

現代化工作負載需求必須達到 AI 級速度、安全性與規模。您的技術棧準備好了嗎?

進行評估
PURE360 示範
探索、認識、體驗 Pure Storage。

存取隨取隨用影片與示範,了解 Pure Storage 的強大功效。

觀賞示範影片
精神領袖
創新競賽

儲存創新最前線的產業領導者最新深度資訊與觀點。

了解更多資訊
您的瀏覽器已不受支援!

較舊版的瀏覽器通常存在安全風險。為讓您使用我們網站時得到最佳體驗,請更新為這些最新瀏覽器其中一個。

Personalize for Me
Steps Complete!
1
2
3
Thinking...