Stan Blog

學習過程中的一些記錄

[DB] Isolation

Dirty read transaction 還沒 commit,就已經讀得到更新後的結果

NON-repeatable reads 在同個 transaction 使用相同 query 卻讀取到不同資料 ps: dirty read 也是一種 non-repeatable reads

Phantom read 在同個 transaction 連續讀取兩次時,讀取出來的筆數跟上次不同

Isolation Level

  1. Read Uncommitted: 代表 transaction 可以讀到別的 transaction 尚未 commit 的資料

  2. Read Commited: 代表 transaction 只能讀到別的 transaction 已經 commit 的資料,沒有 commit 的話不會讀到

  3. Repeatable Read: 代表每次 transaction 讀取特定欄位時,若使用的 query 條件相同,就會讀取到相同資料

  4. Serializable: 代表在多個 transaction 同時執行時,只要 transaction 的順序相同,得到的結果也會相同

  • MySQL 預設的 isolation level 是 Repeatable Read
  • Postgres 預設的 isolation level 是 Read Committed

2018-05-27 22 30 02 From: Wiki


Ref:

Comments

comments powered by Disqus