暑期自學 Day 14 | 資料庫 (七)- 事務

Borris發表於2020-05-29

事務

  • 多個操作被事務管理後,要麼同時失敗,要麼同時成功;避免安全問題發生。
  • 操作:
    • 開啟:start transaction;
    • 結束:commit;
    • 回滾:rollback;
  • mysql 中 DML 預設自動提交事務
    • 設定手動提交 SET @@autocommit = 0;

事務四大特徵***

  • 原子性:不可分割的最小操作單位,要麼同時成功,要麼同時失敗。
  • 永續性:事務提交或回滾後,資料庫會持久化儲存資料。
  • *隔離性:多個事務之間相互獨立。– 引出資料的隔離級別
  • 一致性:事務操作前後資料總量不變。

事務隔離級別

  • 多個事務操作同一組資料,會引發一些問題,需要設定不同隔離級別解決問題。
  • 存在的問題:
    • 髒讀:一個事務讀到另一個事務未提交的資料。
    • 不可重複讀(虛讀):同一個事務中,兩次讀取到的資料不一樣。
    • 幻讀:一個事務運算元據表中所有記錄,另一個事務新增了一條資料,則第一個事務查詢不到自己的修改。
  • 幾個級別
    • read uncommitted
    • read commited: 解決髒讀,Oracle 預設級別
    • repeatable read:解決髒讀和虛讀,mySql 預設級別
    • serializable:解決所有問題,相當於給操作上了鎖,只有一個事務執行完成才能執行另一個事務。
  • 級別安全性由低到高,效率由高到低
  • 檢視事務級別:SELECT @@tx_isolation;
  • 修改事務隔離級別:SET GLOBAL TRANSACTION ISOLATION LEVEL 級別字串;
本作品採用《CC 協議》,轉載必須註明作者和本文連結

相關文章