當我們談論資料庫的ACID,我們是在描述一組保證資料庫交易正確和可靠的屬性。ACID代表原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)和持久性(Durability),這四大特性確保了資料庫交易的可靠性和資料的安全性:
read phenomenon
。When a transaction is impacted by other transactions, it is called a "Read Phenomenon
.”
It happens when there is low-level
isolation.
There are several types of Read Phenomenon
:
當一個交易讀取了另一個未提交交易所修改的數據時,就會發生髒讀。這意味著,如果那個修改的交易最後回滾(即取消),那麼第一個交易讀取的數據就是不正確的。
在一個交易的兩次讀取操作之間,另一個交易修改或刪除了該數據,導致第一個交易的兩次讀取結果不一致。
在一個交易的兩次查詢操作之間,另一個交易插入或刪除了一些行,導致第一個交易的兩次查詢結果集不一致。
序列化異常是指當多個交易同時進行時,可能會發生的不符合期望的結果。這些結果在這些交易一個接一個、按順序執行時,也就是完全串行化時是不會發生的。
ANSI其定義SQL不同的 Isolation 等級來標明哪個等級的 Isolation 可以解決上述問題:
Dirty Read
。Dirty Read
的問題,但仍可能出現Non-Repeatable Read
。Non-Repeatable Read
的問題,但仍可能出現Phantom Read
。Serialization Anomaly
,包括Phantom Read
,但可能會影響性能,因為它通常需要更多的鎖。