隔離等級、儲存點與回滾

PostgreSQL 的交易與錯誤處理

Jason Myers

Instructor

隔離等級

隔離等級 Dirty Read Nonrepeatable Read Phantom Read Serialization Anomaly
Read Uncommitted 受保護(PostgreSQL) 易受影響 易受影響 易受影響
Read Committed 受保護 易受影響 易受影響 易受影響
Repeatable Read 受保護 受保護 受保護(PostgreSQL) 易受影響
Serializable 受保護 受保護 受保護 受保護
PostgreSQL 的交易與錯誤處理

Repeatable Read

  • SERIALIZABLE

    • 將所有已提交交易模擬為序列化執行。
  • REPEATABLE READ

    • 可見資料:
      • 交易開始前已提交的資料
      • 同一交易中先前語句的結果
    • 不會看到並行交易所提交的變更。
PostgreSQL 的交易與錯誤處理

REPEATABLE READ 視覺化

REPEATABLE READ 圖解

PostgreSQL 的交易與錯誤處理

REPEATABLE READ 視覺化

REPEATABLE READ 圖解

PostgreSQL 的交易與錯誤處理

REPEATABLE READ 視覺化

REPEATABLE READ 圖解

PostgreSQL 的交易與錯誤處理

REPEATABLE READ

START TRANSACTION ISOLATION LEVEL REPEATABLE READ;

UPDATE inventory SET quantity = quantity - 4 WHERE name = 'macaron'; SAVEPOINT first;
UPDATE inventory SET quantity = quantity - 12 SAVEPOINT second; COMMIT;
PostgreSQL 的交易與錯誤處理

一起來練習吧!

PostgreSQL 的交易與錯誤處理

Preparing Video For Download...