目錄
一、事務概念
定義:
一個事務是由一條或者多條SQL語句所組成的一個不可分割的單元,只有事務中的所有操作都正常執行完,那麼整個事務才能被提交到數據庫。如果有部分事務處理失敗,那麼事務就會回退到最初的狀態,因此:事務要麼成功,要麼全部失敗,不能出現部分成功和失敗。
事務可以設置保存點SavePoint,當事務發生執行錯誤的時候,可以選擇回滾到保存點。
基本概念:
- 事務是一組SQL語句的執行,要麼全部成功,要麼全部失敗,不能出現部分成功和失敗,(保證事務執行時的原子操作)
- 事務的所有SQL全部執行完成,才能提交(commit)事務,把數據結果寫入磁盤上;
- 在SQL執行過程中,有SQL出現錯誤,那麼事務就必須回滾(rollback)到初始狀態。
- 事務也可以設置保存點SavePoint,當事務執行發生錯誤的時候,可以選擇回滾到保存點。
二、事務的ACID特性
每一個事務必須滿足下面四個特性:
- 事務的原子性(Atomic)
事務是一個不可分割的整體,事務必須具有原子特性,即數據操作時,要麼全部執行,要麼全不執行,即不允許事務部分的完成。 - 事務的一致性(Consistency)
1)一個事務執行之前和執行之後,數據庫數據必須保持一致性狀態,數據庫的一致性狀態必須由用戶來負責,由併發控制機制實現。
2)由併發操作帶來的數據不一致性問題包括數據髒讀、不可重複讀和幻讀
- 事務的隔離性(Isolation)
事務的隔離級別 用鎖來實現 (行鎖,作用於有索引的字段,沒有索引,便退化成表鎖)
1)當兩個或者多個事務併發執行時,爲保證數據的安全性,將一個事務內的操作與其他的事務的操作隔離起來,不被其他正在執行的事務看到。(eg:假如事務T1和T2併發操作時,對T1而言,T1要麼在T2執行完成之後執行,那麼T1是可以看到T2的執行的結果;T1要麼在T2執行之前完成,那麼T2 是可以看到T1的執行的結果)
2)隔離性使得每個事務的更新在它被提交之前,對其他事務都是不可見的。 - 事物的持久性(Durability)
事務完成(commit、rollback)之後,數據庫管理系統保證數據庫中的數據是永久性保存下來的, 即使數據庫出現故障,也能保證恢復數據。