當(dāng)前位置:工程項目OA系統(tǒng) > 泛普各地 > 吉林OA系統(tǒng) > 長春OA系統(tǒng) > 長春OA行業(yè)資訊
數(shù)據(jù)庫中的事務(wù)處理概念及其應(yīng)用
一 什么是事務(wù)
事務(wù)是由相關(guān)操作構(gòu)成的一個完整的操作單元。兩次連續(xù)成功的COMMIT或ROLLBACK之間的操作,稱為一個事務(wù)。在一個事務(wù)內(nèi),數(shù)據(jù)的修改一起提交或撤銷,如果發(fā)生故障或系統(tǒng)錯誤,整個事務(wù)也會自動撤銷。
比如,我們?nèi)ャy行轉(zhuǎn)賬,操作可以分為下面兩個環(huán)節(jié):
(1) 從第一個賬戶劃出款項。
(2) 將款項存入第二個賬戶。
在這個過程中,兩個環(huán)節(jié)是關(guān)聯(lián)的。第一個賬戶劃出款項必須保證正確的存入第二個賬戶,如果第二個環(huán)節(jié)沒有完成,整個的過程都應(yīng)該取消,否則就會發(fā)生丟失款項的問題。整個交易過程,可以看作是一個事物,成功則全部成功,失敗則需要全部撤消,這樣可以避免當(dāng)操作的中間環(huán)節(jié)出現(xiàn)問題時,產(chǎn)生數(shù)據(jù)不一致的問題。
一個事務(wù)是由一個可執(zhí)行的SQL語句開始,一個可執(zhí)行SQL語句產(chǎn)生對實例的調(diào)用。在事務(wù)開始時,被賦給一個可用回滾段,記錄該事務(wù)的回滾項。一個事務(wù)以下列任何一個出現(xiàn)而結(jié)束。數(shù)據(jù)庫事務(wù)是一個邏輯上的劃分,有的時候并不是很明顯,它可以是一個操作步驟,也可以是多個操作步驟。
我們可以這樣理解數(shù)據(jù)庫事物:對數(shù)據(jù)庫所做的一系列修改,在修改過程中,暫時不寫入數(shù)據(jù)庫,而是緩存起來,用戶在自己的終端可以預(yù)覽變化,直到全部修改完成,并經(jīng)過檢查確認無誤后,一次性提交并寫入數(shù)據(jù)庫,在提交之前,必要的話所做的修改都可以取消。提交之后,就不能撤銷,提交成功后其他用戶才可以通過查詢?yōu)g覽數(shù)據(jù)的變化。
以事務(wù)的方式對數(shù)據(jù)庫進行訪問,有如下的優(yōu)點:
* 把邏輯相關(guān)的操作分成了一個組。
* 在數(shù)據(jù)永久改變前,可以預(yù)覽數(shù)據(jù)變化。
* 能夠保證數(shù)據(jù)的讀一致性。
二 數(shù)據(jù)庫事務(wù)的應(yīng)用
數(shù)據(jù)庫事務(wù)處理可分為隱式和顯式兩種。顯式事務(wù)操作通過命令實現(xiàn),隱式事務(wù)由系統(tǒng)自動完成提交或撤銷(回退)工作,無需用戶的干預(yù)。
隱式提交的情況包括:當(dāng)用戶正常退出SQL*Plus或執(zhí)行CREATE、DROP、GRANT、REVOKE等命令時會發(fā)生事務(wù)的自動提交。
還有一種情況,如果把系統(tǒng)的環(huán)境變量AUTOCOMMIT設(shè)置為ON(默認狀態(tài)為OFF),則每當(dāng)執(zhí)行一條INSERT、DELETE或UPDATE命令對數(shù)據(jù)進行修改后,就會馬上自動提交。設(shè)置命令格式如下:
SET AUTOCOMMIT ON/OFF
隱式回退的情況包括:當(dāng)異常結(jié)束SQL*Plus或系統(tǒng)故障發(fā)生時,會發(fā)生事務(wù)的自動回退。
顯式事務(wù)處理的數(shù)據(jù)庫事務(wù)操作語句有3條,分別是COMMIT,ROLLBACK,SAVEPOINT語句。
COMMIT是數(shù)據(jù)庫事物提交,將變化寫入數(shù)據(jù)庫。此操作把多個步驟對數(shù)據(jù)庫的修改,一次性地永久寫入數(shù)據(jù)庫,代表數(shù)據(jù)庫事務(wù)的成功執(zhí)行。ROLLBACK是數(shù)據(jù)庫事務(wù)回退,撤銷對數(shù)據(jù)庫的修改。操作在發(fā)生問題時,把對數(shù)據(jù)庫已經(jīng)作出的修改撤消,回退到修改前的狀態(tài)。在操作過程中,一旦發(fā)生問題,如果還沒有提交操作,則隨時可以使用ROLLBACK來撤消前面的操作。SAVEPOINT則用于在事務(wù)中間建立一些保存點,ROLLBACK可以使操作回退到這些點撤上邊,而不必撤銷全部的操作。一旦COMMIT完成,就不能用ROLLBACK來取消已經(jīng)提交的操作。一旦ROLLBACK完成,被撤消的操作要重做,必須重新執(zhí)行相關(guān)操作語句。
如何開始一個新的事務(wù)呢?一般情況下,開始一個會話(即連接數(shù)據(jù)庫),執(zhí)行第一條SQL語句將開始一個新的事務(wù),或執(zhí)行COMMIT提交或ROLLBACK撤銷事務(wù),也標(biāo)志新的事務(wù)的開始。另外,執(zhí)行DDL(如CREATE)或DCL命令也將自動提交前一個事務(wù)而開始一個新的事務(wù)。
數(shù)據(jù)在修改的時候會對記錄進行鎖定,其他會話不能對鎖定的記錄進行修改或加鎖,只有當(dāng)前會話提交或撤銷后,記錄的鎖定才會釋放。
例如修改雇員SCOTT的工資,工資在原有基礎(chǔ)上增加1000:
UPDATE emp SET sal=sal+1000 WHERE empno=7788;
執(zhí)行結(jié)果:
已更新 1 行。
顯示修改后SCOTT的工資:
SELECT ename,sal FROM emp WHERE empno=7788;
執(zhí)行結(jié)果:
ENAME SAL
SCOTT 4000
經(jīng)查看修改結(jié)果正確,提交所做的修改:
COMMIT;
執(zhí)行結(jié)果:
提交完成。
在執(zhí)行COMMIT后,工資的修改被永久寫入數(shù)據(jù)庫。本訓(xùn)練的第1步,先使用COMMIT命令提交原來的操作,同時標(biāo)志一個新的事務(wù)的開始。注意:在事務(wù)執(zhí)行過程中,隨時可以預(yù)覽數(shù)據(jù)的變化。對于比較大的事務(wù),可以使用SAVEPOINT命令在事務(wù)中間劃分一些斷點,用來作為回退點。(IT專家網(wǎng))
- 12012年云計算服務(wù)支出將達420億美元
- 2BI(商業(yè)智能)實施服務(wù)比BI工具重要
- 3分析:虛擬化技術(shù)給企業(yè)應(yīng)用帶來的優(yōu)勢
- 4網(wǎng)絡(luò)管理員談十四條保護路由器的辦法
- 5OA辦公系統(tǒng)實現(xiàn)企業(yè) “仁義禮智信”
- 6美國聯(lián)邦政府如何保護互聯(lián)網(wǎng)安全?
- 7數(shù)據(jù)庫高效管理應(yīng)當(dāng)破除迷信
- 8詳解Java語言的內(nèi)存泄漏
- 9數(shù)據(jù)丟失防護 企業(yè)何去何從?
- 10企業(yè)應(yīng)為HPC系統(tǒng)選擇哪一操作系統(tǒng)
- 11快速增強路由器安全的十個小技巧
- 12以太網(wǎng)將成為數(shù)據(jù)中心唯一網(wǎng)絡(luò)技術(shù)
- 13企業(yè)部署虛擬化前要想清楚的十大問題
- 14企業(yè)節(jié)能技術(shù)之重復(fù)數(shù)據(jù)刪除技術(shù)
- 15中小企業(yè)服務(wù)器虛擬化應(yīng)用成本分析
- 16網(wǎng)絡(luò)管理技巧進階:如何管理實時通信軟件
- 17企業(yè)協(xié)同四層理論組成了一個協(xié)同金字塔
- 18太陽、風(fēng)、海藻:未來數(shù)據(jù)中心的能源
- 19虛擬機數(shù)量增加將加大系統(tǒng)安全風(fēng)險
- 20中小企業(yè)應(yīng)如何著手服務(wù)器虛擬化部署
- 21HPC TOP 500榜單的啟示:新時代的開始
- 22為什么SaaS可以令I(lǐng)T技能無關(guān)緊要
- 23如何理解虛擬私有云VPC?
- 24讓存儲虛擬化更智能的五大步驟
- 25云計算是創(chuàng)新了技術(shù)還是創(chuàng)新了營銷
- 26分支機構(gòu)網(wǎng)絡(luò)管理影響企業(yè)的IP電話管理
- 27CIO不得不面對的數(shù)據(jù)中心四大變革
- 28解決服務(wù)器安全問題的七個技巧
- 29企業(yè)從Unix遷移到Linux真有必要嗎
- 30如何高效管理企業(yè)的基礎(chǔ)應(yīng)用服務(wù)?
成都公司:成都市成華區(qū)建設(shè)南路160號1層9號
重慶公司:重慶市江北區(qū)紅旗河溝華創(chuàng)商務(wù)大廈18樓