新聞中心
隨著各種應用系統(tǒng)的普及,數(shù)據庫管理系統(tǒng)也在盡力滿足各種用戶需求,并試圖為其提供更好的結果。為了保證數(shù)據的完整性和可靠性,數(shù)據庫管理系統(tǒng)采用了事務處理的概念。數(shù)據庫事務處理是一種保證不違反數(shù)據完整性、并發(fā)控制等問題的機制。本文將介紹數(shù)據庫事務處理的概念、特性、行為以及其它相關問題。

成都創(chuàng)新互聯(lián)公司專注于修文網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供修文營銷型網站建設,修文網站制作、修文網頁設計、修文網站官網定制、小程序定制開發(fā)服務,打造修文網絡公司原創(chuàng)品牌,更為您提供修文網站排名全網營銷落地服務。
1. 事務處理的概念
在數(shù)據庫系統(tǒng)中,事務是指一組要么全部執(zhí)行要么全部撤銷的操作。例如,把一筆錢從銀行賬戶轉移到另一個賬戶,這個操作可能會包含幾個步驟:驗證源賬戶余額、扣除余額、驗證目標賬戶是否存在、將余額存入目標賬戶中。在以上所有的步驟中,如果有任何一個步驟失敗了,那么這筆交易就被視為失敗,所有已經執(zhí)行的步驟必須撤銷。
2. 事務處理的特性
事務處理具有ACID四個特性,分別是原子性、一致性、隔離性和持久性。
原子性:事務對數(shù)據的所有操作要么全部成功,要么全部失敗。如果事務執(zhí)行失敗,則系統(tǒng)將回滾所有對數(shù)據所做出的更改。
一致性:事務將數(shù)據從一種有效狀態(tài)轉移到另一種有效狀態(tài)。在事務處理期間,數(shù)據的完整性一直得到維護,并且以一致的方式存儲到數(shù)據庫中。
隔離性:數(shù)據庫系統(tǒng)保證不同事務之間相互隔離,互不干擾,且高并發(fā)條件下也不會出現(xiàn)數(shù)據錯亂的情況。
持久性:一旦提交,事務就不可逆轉,對數(shù)據的修改持久保存,并且對其它用戶可見。
3. 事務處理的行為
在使用事務處理時,事務需要按照特定的模式和步驟進行。具體步驟如下:
(1)開始:該步驟開始執(zhí)行指定事務的過程,并且預留資源,以便將數(shù)據更改保存到數(shù)據庫中。
(2)執(zhí)行操作:當開始事務后,用戶就可以執(zhí)行操作,例如修改數(shù)據。
(3)提交:如果所有操作執(zhí)行成功,那么該事務將提交。在提交前,所有的修改將暫時存儲于內存中。
(4)回滾:如果某個操作失敗,那么該事務將中止。所有未提交的修改都將被回滾或拋棄。
4. 使用事務處理的好處
事務處理常常被用于需要加強數(shù)據完整性和可靠性的環(huán)境中。在使用事務處理時,可以同時處理多個數(shù)據操作,這樣能夠大大提高數(shù)據處理的效率。同時,事務處理也可以讓應用更加健壯和安全。比如,當一個事務中的一個操作發(fā)生錯誤時,系統(tǒng)會自動回滾該事務并撤銷所有的修改,這可以避免錯誤對數(shù)據造成的損失。
5. 注意事項
雖然使用事務處理可以提高系統(tǒng)的穩(wěn)定性和數(shù)據的完整性,但還是需要注意一些問題。例如,當一個事務開始時,有必要預留一定的資源,因此事務處理可能使得機器的負載變高。此外,如果事務處理程序包含大量的操作,那么其性能可能會受到影響。在使用事務處理時,用戶需要權衡其功能和性能,并且根據具體情況進行調整。
本文介紹了數(shù)據庫事務處理的概念、特性、行為和一些注意事項。事務處理是現(xiàn)代數(shù)據庫系統(tǒng)中一個非常重要的特性,它可以保證數(shù)據的完整性和可靠性,對應用程序的正確性和性能起著重要作用。使用事務處理需要注意其對數(shù)據庫的影響,用戶應該根據實際情況進行調整。
相關問題拓展閱讀:
- 數(shù)據庫事務的處理模型
- 如何以事物的方式對數(shù)據庫進行訪問
數(shù)據庫事務的處理模型
事務有三種模型:
1.隱式事務是指每一條數(shù)據操作語句都自動地成為一個事務,事務的開始是隱式的,事務的結束有明確的
標記。
2.顯式事務是指有顯式的開始和結束標記的事務,每個事務都有顯式的開始和結束標記。
3.自動事務是系統(tǒng)自動默認的,開始和結束不用標記。
并發(fā)控制
1. 數(shù)據庫系統(tǒng)一個明顯的特點是多個用戶共享數(shù)據庫資源,尤其是多個用戶可以同時存取相同數(shù)據。
串行控制:如果事務是順序執(zhí)行的,即一個事務完成之后,再開始另一個事務
并行控制:如果DBMS可以同時接受多個事務,并且這些事務在時間上可以重疊執(zhí)行。
2.并發(fā)控制概述
事務是并發(fā)控制的基本單位,保證事讓塌務ACID的特性是事務處理的重要任務,而并發(fā)操作有可能會破壞其ACID特性。
DBMS并發(fā)控制機制的責任:
對并發(fā)操作進行正確調度,保證事務的隔離性更一般,確保數(shù)據庫的一致性。
如果沒有鎖定且多個用戶同時訪問一個數(shù)據庫,則當他們的事務同時使用相同的數(shù)據時可能會發(fā)生問題。由于并發(fā)操作帶來的數(shù)據不一致性包括:丟失數(shù)據修改、讀”臟”數(shù)據(臟讀)、不可重復讀、產生幽靈數(shù)據。
(1)丟失數(shù)據修改
當兩個或多個事務選擇同一行,然后基于最初選定的值更新該行時,會發(fā)生丟失更新問題。每個事務都不知道其它事務的存在。最后的更新將重寫由其它事務所做的更新,這將導致數(shù)據丟失。如上例。
再例如,兩個編輯人員制作了同一文檔的電子復本。每個編輯人員獨立地更改其復本,然后保存更改后的復本,這樣就覆蓋了原始文檔。最后保存其更改復本的編輯人員覆蓋了之一個編輯人員所做的更改。如果在之一個編輯人員完坦禪圓成之后第二個編輯人員才能進行更改,則可以避免該問題。
(2)讀“臟”數(shù)據(臟讀)
讀“臟”數(shù)據是指事務T1修改某一數(shù)據,并將其寫回磁盤,事務T2讀取同一數(shù)據后,T1由于某種原因被除撤消,而此時T1把已修改過的數(shù)據又恢復原值,T2讀到的數(shù)據與數(shù)據庫的數(shù)據不一致,則T2讀到的數(shù)據就為“臟”數(shù)據,即不正確的數(shù)據。
例如:一個編輯人員正在更改電子文檔。在更改過程中,另一個編輯人員復制了該文檔(該復本包含到目前為止所做的全部更改)并將其分發(fā)給預期的用戶。此后,之一個編輯人員認為所做的更改是錯誤的,于是刪除了所做的編輯并保存了文檔。分發(fā)給用戶的文檔包含不再存在的編輯內容,并且這些編輯內容應認為從未存在過。如果在之一個編輯人員確定最終更改前任何人都不能讀取更改的文檔,則可以避免該問題。
( 3)不可重復讀
指事務T1讀取數(shù)據后,事務T2執(zhí)行更新操作,使T1無法讀取前一次結果。不可重復讀包括三種情況:
事務T1讀取某一數(shù)據后,T2對其做了修改,當T1再次讀該數(shù)據后,得到與前一不同的值。
(4)產生幽靈數(shù)據
按一定條件從數(shù)據庫中讀取了某些記錄后,T2刪除了其中部分記錄,當T1再次按相同條件讀取數(shù)據時,發(fā)現(xiàn)某些記錄消失
T1按一定條件從數(shù)據庫中讀取某些數(shù)據記錄后,T2插入了一些記錄,當T1再次按相同條件讀取數(shù)據時,發(fā)現(xiàn)多了一些記錄襲兄。
如何以事物的方式對數(shù)據庫進行訪問
一 事務的概念
事務是由相關操作構成毀散宏的一個完整的操作單元。兩次連續(xù)成功的COMMIT或ROLLBACK之間的操作,稱為一個事務。在一個事務內,數(shù)據的修改一起提交或撤銷,如果發(fā)生故障或系統(tǒng)錯誤,整個事務也會自動撤銷。
oracle的數(shù)據語音分為數(shù)據定義語言(DDL)、數(shù)據控制語言(DCL)和數(shù)據操縱語言(DML)。其中的DML語言會生成事務,其他兩種語言只要執(zhí)行,事務就會結束。
簡單的說DML語言可以建立事務,DDL和DCL不能建立事務。
DML語言包括幾個命令,例如 select insert delete update等等,這些命令執(zhí)行后,當前用戶的顯示信息是更改了,但是其他人訪問你改的表的時候數(shù)據并沒有更改,需要使用commit確認后才能更改。如果當前用戶在沒有執(zhí)行commit前反悔操作了,那使用rollback命令可以回退到執(zhí)行操縱語句之前,但是如果已經執(zhí)行了commit語句是無法回退的。
比如,我們去銀行轉賬,操作可以分為下面兩個環(huán)節(jié):
(1) 從之一個賬戶劃出款項。
(2) 將款項存入第二個賬戶。
在這個過程中,兩個環(huán)節(jié)是關聯(lián)的。之一個賬戶劃出款項必須保證正確的存入第二個賬戶,如果第二個環(huán)節(jié)沒有完成,整個的過程都應該取消,否則就會發(fā)生丟失款項的問題。整個交易過程,可以看作是一個事物,成功則全部成功,失敗則需要全部撤消,這樣可以避免當操作的中間環(huán)節(jié)出現(xiàn)問題時,產生數(shù)據不一致的問題。
一個事務是由一個可執(zhí)行的SQL語句開始,一個可執(zhí)行SQL語句產生對實例的調用。在事務開始時,被賦給一個可用回滾段,記錄該事務的回滾項。一個事務以下列任何一個出現(xiàn)而結束。數(shù)據庫事務是一個邏輯上掘蠢的劃分,有的時候并不是很明顯,它可以是一個操作步驟,也可以是多個操作步驟。
我們可纖冊以這樣理解數(shù)據庫事物:對數(shù)據庫所做的一系列修改,在修改過程中,暫時不寫入數(shù)據庫,而是緩存起來,用戶在自己的終端可以預覽變化,直到全部修改完成,并經過檢查確認無誤后,一次性提交并寫入數(shù)據庫,在提交之前,必要的話所做的修改都可以取消。提交之后,就不能撤銷,提交成功后其他用戶才可以通過查詢?yōu)g覽數(shù)據的變化。
以事務的方式對數(shù)據庫進行訪問,有如下的優(yōu)點:
* 把邏輯相關的操作分成了一個組。
* 在數(shù)據永久改變前,可以預覽數(shù)據變化。
* 能夠保證數(shù)據的讀一致性。
二 數(shù)據庫事務的應用
數(shù)據庫事務處理可分為隱式和顯式兩種。顯式事務操作通過命令實現(xiàn),隱式事務由系統(tǒng)自動完成提交或撤銷(回退)工作,無需用戶的干預。
隱式提交的情況包括:當用戶正常退出SQL*Plus或執(zhí)行CREATE、DROP、GRANT、REVOKE等命令時會發(fā)生事務的自動提交。
還有一種情況,如果把系統(tǒng)的環(huán)境變量AUTOCOMMIT設置為ON(默認狀態(tài)為OFF),則每當執(zhí)行一條INSERT、DELETE或UPDATE命令對數(shù)據進行修改后,就會馬上自動提交。設置命令格式如下:
SET AUTOCOMMIT ON/OFF
隱式回退的情況包括:當異常結束SQL*Plus或系統(tǒng)故障發(fā)生時,會發(fā)生事務的自動回退。
顯式事務處理的數(shù)據庫事務操作語句有3條,分別是COMMIT,ROLLBACK,SAVEPOINT語句。
COMMIT是數(shù)據庫事物提交,將變化寫入數(shù)據庫。此操作把多個步驟對數(shù)據庫的修改,一次性地永久寫入數(shù)據庫,代表數(shù)據庫事務的成功執(zhí)行。ROLLBACK是數(shù)據庫事務回退,撤銷對數(shù)據庫的修改。操作在發(fā)生問題時,把對數(shù)據庫已經作出的修改撤消,回退到修改前的狀態(tài)。在操作過程中,一旦發(fā)生問題,如果還沒有提交操作,則隨時可以使用ROLLBACK來撤消前面的操作。SAVEPOINT則用于在事務中間建立一些保存點,ROLLBACK可以使操作回退到這些點撤上邊,而不必撤銷全部的操作。一旦COMMIT完成,就不能用ROLLBACK來取消已經提交的操作。一旦ROLLBACK完成,被撤消的操作要重做,必須重新執(zhí)行相關操作語句。
如何開始一個新的事務呢?一般情況下,開始一個會話(即連接數(shù)據庫),執(zhí)行之一條SQL語句將開始一個新的事務,或執(zhí)行COMMIT提交或ROLLBACK撤銷事務,也標志新的事務的開始。另外,執(zhí)行DDL(如CREATE)或DCL命令也將自動提交前一個事務而開始一個新的事務。
數(shù)據在修改的時候會對記錄進行鎖定,其他會話不能對鎖定的記錄進行修改或加鎖,只有當前會話提交或撤銷后,記錄的鎖定才會釋放。
例如修改雇員SCOTT的工資,工資在原有基礎上增加1000:
UPDATE emp SET sal=sal+1000 WHERE empno=7788;
執(zhí)行結果:
已更新 1 行。
顯示修改后SCOTT的工資:
SELECT ename,sal FROM emp WHERE empno=7788;
執(zhí)行結果:
ENAME SAL
SCOTT 4000
經查看修改結果正確,提交所做的修改:
COMMIT;
執(zhí)行結果:
提交完成。
在執(zhí)行COMMIT后,工資的修改被永久寫入數(shù)據庫。本訓練的第1步,先使用COMMIT命令提交原來的操作,同時標志一個新的事務的開始。注意:在事務執(zhí)行過程中,隨時可以預覽數(shù)據的變化。對于比較大的事務,可以使用SAVEPOINT命令在事務中間劃分一些斷點,用來作為回退點。
數(shù)據庫的事務處理的介紹就聊到這里吧,感謝你花時間閱讀本站內容,更多關于數(shù)據庫的事務處理,數(shù)據庫事務處理簡介,數(shù)據庫事務的處理模型,如何以事物的方式對數(shù)據庫進行訪問的信息別忘了在本站進行查找喔。
創(chuàng)新互聯(lián)服務器托管擁有成都T3+級標準機房資源,具備完善的安防設施、三線及BGP網絡接入帶寬達10T,機柜接入千兆交換機,能夠有效保證服務器托管業(yè)務安全、可靠、穩(wěn)定、高效運行;創(chuàng)新互聯(lián)專注于成都服務器托管租用十余年,得到成都等地區(qū)行業(yè)客戶的一致認可。
標題名稱:數(shù)據庫事務處理簡介(數(shù)據庫的事務處理)
本文地址:http://www.fisionsoft.com.cn/article/dphshje.html


咨詢
建站咨詢
