ACID 模型是一組資料庫設計原則,強調對於商業資料和任務關鍵應用程式而言很重要的可靠性方面。MySQL 包含諸如 InnoDB
儲存引擎之類的元件,這些元件嚴格遵守 ACID 模型,以便資料不會損壞,並且結果不會因軟體當機和硬體故障等異常情況而失真。當您依賴符合 ACID 的功能時,您不需要重新發明一致性檢查和當機復原機制。如果您有額外的軟體防護措施、超可靠的硬體,或是可以容忍少量資料遺失或不一致的應用程式,您可以調整 MySQL 設定以犧牲一些 ACID 可靠性來換取更高的效能或輸送量。
以下章節討論 MySQL 功能,尤其是 InnoDB
儲存引擎,如何與 ACID 模型的類別互動
A:原子性。
C:一致性。
I::隔離性。
D:持久性。
原子性
ACID 模型的原子性方面主要涉及 InnoDB
交易。相關的 MySQL 功能包括
autocommit
設定。COMMIT
陳述式。ROLLBACK
陳述式。
一致性
ACID 模型的一致性方面主要涉及內部 InnoDB
處理以保護資料免受當機影響。相關的 MySQL 功能包括
InnoDB
雙寫緩衝區。請參閱第 17.6.4 節:「雙寫緩衝區」。InnoDB
當機復原。請參閱InnoDB 當機復原。
隔離性
ACID 模型的隔離性方面主要涉及 InnoDB
交易,尤其是套用於每個交易的隔離層級。相關的 MySQL 功能包括
autocommit
設定。交易隔離層級和
SET TRANSACTION
陳述式。請參閱第 17.7.2.1 節:「交易隔離層級」。InnoDB
鎖定的低階詳細資訊。詳細資訊可以在INFORMATION_SCHEMA
資料表中檢視(請參閱第 17.15.2 節:「InnoDB INFORMATION_SCHEMA 交易和鎖定資訊」)和 Performance Schemadata_locks
和data_lock_waits
資料表。
持久性
ACID 模型中關於 耐用性 (durability) 的面向,涉及到 MySQL 軟體功能與您特定硬體組態的互動。由於 CPU、網路和儲存裝置的功能有許多不同的可能性,因此這方面是最難以提供具體指南的。(而這些指南可能採用 「購買新硬體」 的形式。)相關的 MySQL 功能包括:
InnoDB
雙寫緩衝區。請參閱第 17.6.4 節:「雙寫緩衝區」。sync_binlog
變數。儲存裝置中的寫入緩衝區,例如磁碟機、SSD 或 RAID 陣列。
儲存裝置中具有電池備援的快取。
用於執行 MySQL 的作業系統,特別是其對
fsync()
系統呼叫的支援。保護所有執行 MySQL 伺服器和儲存 MySQL 資料的電腦伺服器和儲存裝置的電力之不斷電供應系統 (UPS)。
您的備份策略,例如備份頻率和類型,以及備份保留期限。
對於分散式或託管的資料應用程式,MySQL 伺服器的硬體所在之資料中心的特定特性,以及資料中心之間的網路連線。