暑期自學 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 協議》,轉載必須註明作者和本文連結