(数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述
文章目錄
- 一:事務的基本概念
- (1)事務
- A:定義
- B:事務的定義
- (2)事務的四個特性——ACID
- A:數據庫的ACID
- ①:原子性(Atomicity)
- ②:一致性(Consistency)
- ③:隔離性(Isolation)
- ④:持續性(Durability)
- B:破壞ACID的因素
- 二:數據庫恢復概述
一:事務的基本概念
(1)事務
A:定義
事務:是用戶定義的一個數據庫操作序列。這些操作要么不做,要么全做,是一個不可分割的工作單位。例如在RDBMS中一個事務可以是一條SQL語句或整個程序。事務是數據庫恢復和并發控制的基本單位
- 事務和程序的區別:一般來說,一個程序中包含多個事務
B:事務的定義
事務的定義:事務的開始與結束由用戶顯式控制。如果用戶沒有顯式地定義事務,則由DBMS按默認規定自動劃分事務。在SQL中,定義事務語句有以下三條
- BEGIN TRANSACTION:表示事務的開始
- COMMIT:表示事務的正常結束并提交事務的所有操作
- ROLLBACK:表示事務的結束,但沒有正常結束,需要進行回滾(撤銷已完成操作,使系統恢復至回滾前狀態)
注意不同數據庫系統定義語句有所區別
SQL Server
BEGIN TRANSACTION COMMIT | ROLLBACKMySQL
START TRANSACTION COMMIT | ROLLBACKOracle
START TRANSACTION NAME COMMIT | ROLLBACK(2)事務的四個特性——ACID
A:數據庫的ACID
①:原子性(Atomicity)
原子性:事務是數據庫的邏輯工作單位,事務中包含的諸多操作要么全做、要么不做。因故障未能做完的,需要有一套機制用于“撤銷”那一部分已經做了的
②:一致性(Consistency)
一致性:事務執行的結果必須是使數據庫從一個一致性狀態變到另一個一致性狀態
- 一致性狀態:數據庫中只包含成功事務提交的結果
- 不一致狀態:數據庫中包含事務未完成時的狀態
例如銀行轉賬業務,賬戶AAA轉1萬元到賬戶BBB,該事務包含兩個操作:首先是AAA減少一萬元,其次是BBB增加一萬元,這兩個操作要么全部做要么全不做,如果只做其中一個就會發生邏輯錯誤,數據庫就處于不一致狀態了
③:隔離性(Isolation)
隔離性:一個事務不能被其他事務干擾。也即一個事務的內部操作及使用的數據對其他并發事務是隔離的,并發執行的各個事務之間不能互相干擾
比如,下列兩個并發執行的事務T1和T2,如按表中所示順序執行,則事務T1的修改被T2覆蓋了,即T2干撓了T1。違背了事務的隔離性,是錯誤的調度
④:持續性(Durability)
持續性:一個事務一旦提交,它對數據庫中數據的改變就是永久性的。接下來的其他操作或故障不應該對其執行結果有任何影響
B:破壞ACID的因素
主要有兩類
- 故障:沒有執行完;雖然沒有完,但是存儲介質故障。破壞了ACID中的ACD
- 并發干擾:多個事務并行運行時,不同事務的操作交叉執行,互相干擾。破壞了ACID中的I
因此這就是DBMS的恢復機制和并發控制機制需要解決的問題
- 本章介紹恢復機制
- 下一章介紹并發控制機制
二:數據庫恢復概述
定義:把數據庫從因破壞或故障而導致的錯誤狀態恢復到某個已知的正確狀態的技術
目的:
- 保持事務的原子性
- 保持事務的持久性
實現:由DBMS專門的恢復子系統完成
總結
以上是生活随笔為你收集整理的(数据库系统概论|王珊)第十章数据库恢复技术-第一、二节:事务的基本概念和数据库恢复概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: AFN post的数据编码格式问题
- 下一篇: Python---常见问题