Transaction

先讀後寫事務

  • February 28, 2012

談論事務(db事務),does a read operation have always precede a write operation?

這很明顯,不是嗎?

提前致謝

*當然我的問題沒有考慮任何特定的鎖定協議或與以下問題實際相關的任何內容:

A transaction T is defined by a partial order, termed <, such that: 

if r[x] and w[x] belong to T, then r[x] < w[x]. 

再次感謝。

讀操作是否總是先於寫操作

當然不。

考慮以下事務:

START TRANSACTION;
UPDATE employee 
  SET salary = null;
COMMIT;

事務控制程式碼沒有讀取:

答案不是簡單的“是”或“否”。這取決於您需要閱讀什麼。否則,通過MVCC進行事務隔離將變得毫無意義。

例如,在 MySQL 的 InnoDB 儲存引擎中,您有四個級別的事務隔離:

關於讀寫順序

  • READ-UNCOMMITTED 和 READ-COMMITTED 期望在寫入後讀取(又名臟讀)
  • REPEATABLE-READ 期望在寫入之前讀取
  • SERIALIZABLE 只會是不公平的(順序無關緊要)

與 DBMS(如 MySQL、Oracle、PostgreSQL)一樣,通過 MVCC 支持事務,讀寫順序無關緊要。真正重要的是讀取的內容與所選的事務隔離級別相結合。

引用自:https://dba.stackexchange.com/questions/11868