第6章 數據庫管理之事務

學習:


圖1 數據庫管理

在第六章中主要講了兩方面內容,一是數據庫管理的操作單元事務,二是數據庫管理的各種技術。今天我們來着重解析一下事務的概念及其四大屬性。

那麼我們首先來了解一下事務的基本概念。即事務是構成單一國際工作單元的操作幾個,要麼完整地執行,要不完全不執行。不論發生何種情況,DBS必須保證事務能正確,完整地執行。

由事務的概念我們可以知道,DBS就是來執行事務的,而一個事務並不是一個單一的動作,而是許多動作的集合。就像我們要完成吃飯這件事,看似吃飯是一件事,但卻要買飯,食用和送回餐具這一系列的動作來完成。這纔是一個 事務。下面我們來看一個書上的例子。

T : BEGIN TRANSACTION;/ * 事務開始語句 * /

read (A) ;

A : = A - 50;

write (A) ;

if ( A < 0) ROLLBACK ;/ * 事務回退語句 * /

else { read (B) ;

B : = B + 50 ;

write (B) ;

COMMIT ; }/ * 事務提交語句 * /

書上對這個小例子有很詳細的很好的解釋,這裏不再贅述。寫在這裏主要是爲了我文章的完整,這就像是數據庫有完整性一樣,我的文章也要有完整性。不過,我們要注意事務是以BEGIN TRANSACTION 語句開始的,以COMMIT 語句或ROLLBACK 語句結束的,重點要注意在COMMIT 和ROLLBACK 語句分別是在什麼情況下使用的。

對事務有了一個較爲清晰的認識後,我們接下來就來看看事務的四大屬性。爲例更好的理解事務及其屬性下面我們以去ATM機(自動存取款機)取款爲例進行解析。

一、原子性

假如你有一張內有1000元存款的銀行卡,現在要取出200元交書費,在已經輸入密碼,輸入金額爲200元之後的ATM在點鈔的過程中,突然斷電了,現在錢未到你的手裏,但剛剛已經聽到點鈔的聲音,那麼我們的銀行卡里的錢是不是少了呢?換個地方一查發現還是1000元,沒有少。這就是事務的原子性,要麼完全執行,要麼完全不執行。在介紹事務的基本概念時,我們已經說明事務是很多歌動作的集合,所以只要其中一個動作出了錯,這個事務就會返回到最開始的狀態,就像這裏的取款,要麼從輸入取款金額到錢到你的手裏,要麼就回退到還沒輸入金額的狀態,這就是事務的原子性,即一個事務的不可分割性。

二、一致性

如果現在機器沒有故障,你也成功取出了200元,那麼卡內的餘額應該是800元了,查詢一下確實是800元,此時數據庫中的各張表中的數據就都更新了。數據庫的完整性就是保證數據庫內數據的更新變化的一致,這就是事務的一致性。

三、隔離性

而就在你取款的同時有另一個同學也用你的這張卡在網上購買了一件商品花了50元,則你在這邊查看餘額就是750元。剛剛你取款的動作和你同學購買商品支付的動作並沒有互相干擾,好像就只有自己在對這張卡操作一樣。如果不是你的手機收到關於扣費的提示,你也完全不會察覺到。這就是事務的隔離性,即在多個事務同時執行時,各個事務互不干擾,且結果和這些事務先後單獨執行時的結果一樣(最終卡內餘額都是750元)。這是由DBMS的併發控制子系統實現的。

四、持久性

現在你的銀行卡里還有750元,那兩次分別取款200元和支付的50元的操作記錄在數據庫中就像你取款的動作一樣發生了就是發生了,這就是事務的持久性,即事務一旦被完成了就不會丟失。而事務的這一屬性是由DBMS的恢復管理子系統來實現的。


二  感想 :

在學習事務的時候最重要的就是結合生活來建立聯繫,這樣就便於我們理解了。就像米老師說的,看書的時候要把生活融入書中,而不是把書裏的內容硬塞進腦子裏。還是那句話,找節點,找聯繫,聯繫生活。



發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章