SQL與Oracle對數(shù)據(jù)庫事務(wù)處理的差異性_第1頁
SQL與Oracle對數(shù)據(jù)庫事務(wù)處理的差異性_第2頁
SQL與Oracle對數(shù)據(jù)庫事務(wù)處理的差異性_第3頁
SQL與Oracle對數(shù)據(jù)庫事務(wù)處理的差異性_第4頁
SQL與Oracle對數(shù)據(jù)庫事務(wù)處理的差異性_第5頁
已閱讀5頁,還剩5頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、SQL 和Oracle對數(shù)據(jù)庫事務(wù)處理的差異性作者: Jake, 出處:IT專家網(wǎng)論壇,責(zé)任編輯: 陳子琪, 2009-100-11 113:00在吉日嘎拉拉的軟件編程程走火入魔之之:數(shù)據(jù)庫事事務(wù)處理入門門(適合初學(xué)學(xué)者閱讀)文文章中關(guān)于MMS SQLL Servver和Orracle對對數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性引起一些些爭論,因此此記錄我對數(shù)數(shù)據(jù)庫事務(wù)處處理的想法。背景在吉日嘎拉拉的軟件編程程走火入魔之之:數(shù)據(jù)庫事事務(wù)處理入門門(適合初學(xué)學(xué)者閱讀)文文章中關(guān)于MMS SQLL HYPERLINK /searchwhatis/497/5948997.shtml Servver和Orracle

2、對對數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性引起一些些爭論,因此此記錄我對數(shù)數(shù)據(jù)庫事務(wù)處處理的想法。簡介本文講述MMS SQLL Servver和Orracle對對數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性,以及OOraclee如何對事務(wù)務(wù)處理的實現(xiàn)現(xiàn)。什么是事務(wù)務(wù)數(shù)據(jù)庫事務(wù)務(wù)( HYPERLINK /searchwhatis/132/5947632.shtml Dataabase Transsactioon)是一組組數(shù)據(jù)庫操作作的處理單元元。事務(wù)符合合ACID的的特性: HYPERLINK /searchwhatis/470/6092470.shtml Atomiic:原子性性,要么全部部要么一無所所有。Alll or

3、NNone.Consiistentt:一致性,所所有依賴關(guān)系系以及約束一一致。Isolaated:分分離性,不同同事務(wù)不互相相影響。Durabble:持久久性,提交事事務(wù)的數(shù)據(jù)需需要持久化。為什么要使使用事務(wù)實現(xiàn)事務(wù)主主要有兩大功功能:1.保證數(shù)數(shù)據(jù)庫的coonsisttent(一一致性狀態(tài)),保持所有有依賴關(guān)系以以及約束一致致)。哪怕數(shù)數(shù)據(jù)庫管理系系統(tǒng)出現(xiàn)故障障時(例如斷斷電),也能能恢復(fù)到一致致性狀態(tài)。例例如一個銀行行轉(zhuǎn)帳系統(tǒng),張張三給李四轉(zhuǎn)轉(zhuǎn) HYPERLINK /searchwhatis/273/5949273.shtml 3000圓RRMB,張三三帳號上減33000和李李四帳號上加加

4、3000需需要同時完成成,否則系統(tǒng)統(tǒng)的帳就不平平了。也例如如有些銷售系系統(tǒng)的匯總表表和明細表,是是一個主表和和一個從表,需需要同步更新新。2.并發(fā)時時分離不同事事務(wù)操作。例例如編輯過程程中的數(shù)據(jù)不不給其他事務(wù)務(wù)查詢到。這這也是相對的的,在特效需需求下可能要要支持dirrty reead(臟讀讀),但不是是這里討論的的范圍了。SQL SServerr 20088 的事務(wù)類類型1.自動提提交事務(wù) AAutocoommit Transsactioons這是SQLL Servver默認的的事務(wù)類型,每每一條單獨的的SQL語句句(SQL stateement)都是單獨的的一個事務(wù),語語句執(zhí)行完畢畢后自動

5、提交交。調(diào)用方不不需要手工控控制事務(wù)流程程。2.顯示事事務(wù) Expplicitt Trannsactiions調(diào)用方需要要調(diào)用APII或者使用TT-SQL的的BEGINN HYPERLINK /searchwhatis/297/6092797.shtml TRANNSACTIION 語句句來打開事務(wù)務(wù)。需要調(diào)用用 HYPERLINK /searchwhatis/318/5947318.shtml COMMIIT 或者 HYPERLINK /searchwhatis/218/6093718.shtml ROLLBBACK TTRANSAACTIONN 來提交或或者回滾。3.隱式事事務(wù) Imppl

6、icitt Trannsactiions使用 HYPERLINK /searchwhatis/23/5949023.shtml SETT IMPLLICIT_TRANSSACTIOONS ONN把事務(wù)模式式變成隱式模模式。調(diào)用方方不需要執(zhí)行行BEGINN TRANNSACTIION 語句句來打開事務(wù)務(wù)。數(shù)據(jù)庫引引擎執(zhí)行到SSQL語句的的時候自動打打開事務(wù)。調(diào)調(diào)用方需要調(diào)調(diào)用COMMMIT 或者者 ROLLLBACK TRANSSACTIOON 來提交交或者回滾。當(dāng)當(dāng)數(shù)據(jù)庫引擎擎執(zhí)行下一個個SQL語句句時又自動打打開一個新事事務(wù)。參考:Coontrollling Transsactioons (

7、DDatabaase Enngine)Oraclee的事務(wù)類型型Oraclle的事務(wù)處處理類型有點點像SQL HYPERLINK /searchwhatis/497/5948997.shtml Serveer的隱式事事務(wù)。當(dāng)執(zhí)行行到第一個可可執(zhí)行的SQQL語句時自自動打開事務(wù)務(wù),然后需要要調(diào)用方執(zhí)行行 HYPERLINK /searchwhatis/318/5947318.shtml commiit或者 HYPERLINK /searchwhatis/218/6093718.shtml rolllback來來提交或者回回滾事務(wù),如如果有DDLL語句,Orracle也也會自動提交交事務(wù)的。參考:

8、 HYPERLINK /searchwhatis/297/6092797.shtml Trransacction ManaggementtOraclle的事務(wù)的的實現(xiàn)Oraclle的結(jié)構(gòu)分分邏輯上和物物理上的區(qū)別別。邏輯上的的結(jié)構(gòu)是表空空間,而物理理上的結(jié)構(gòu)是是數(shù)據(jù)文件。邏輯實現(xiàn)Oraclle下實現(xiàn)事事務(wù)在邏輯上上是由Unddo HYPERLINK /searchwhatis/458/6028458.shtml Tabblespaace來實現(xiàn)現(xiàn)的。Unddo Tabblespaace包含UUndo SSegemeents(段段),而Unndo Seegemennts包含UUndo HYPERL

9、INK /searchwhatis/99/5947599.shtml DData。UUndo DData是支支持事務(wù)的邏邏輯單元。圖源自于OOraclee HYPERLINK /searchwhatis/132/5947632.shtml Dataabase 10g: Adminnistraation Worksshop IIUndo Data用用于保存修改改前后的數(shù)據(jù)據(jù),以支持回回滾,長時間間查詢,和fflashbback查詢詢,以及失敗敗事務(wù)恢復(fù)的的功能。由于有了UUndo DData,回回滾事務(wù)變得得容易了,因因為Undoo Dataa保存了修改改前后的數(shù)據(jù)據(jù),保證了事事務(wù)的原子性性。失

10、敗事務(wù)務(wù)恢復(fù)和事務(wù)務(wù)回滾類似,當(dāng)當(dāng)網(wǎng)絡(luò) HYPERLINK /searchwhatis/404/7420404.shtml 中斷或者其他他原因?qū)е率率聞?wù)異常停止止,數(shù)據(jù)庫引引擎可以恢復(fù)復(fù)到一致性狀狀態(tài)。同時Unddo Datta也支持長長時間查詢(Read-consiistentt),例如有有表格T,主主鍵為 HYPERLINK /searchwhatis/25/5948525.shtml keyy,有字段為為f1,數(shù)據(jù)據(jù)如下,盡管管只有4條數(shù)數(shù)據(jù),假設(shè)需需要很長時間間進行查詢。事務(wù)一開始始查詢,一直直沒結(jié)束,而而事務(wù)二開始始修改 HYPERLINK /searchwhatis/25/5948

11、525.shtml keyy為1的數(shù)據(jù)據(jù)為Z,事務(wù)務(wù)二進行提交交,數(shù)據(jù)變成成下面的表格格。但是事務(wù)務(wù)一查詢結(jié)束束的時候還是是讀出A,BB,C,D,因因為查詢是從從Undo中中讀出快照。Flashhback查查詢是Oraacle 110g引進的的功能,可以以查詢出提交交之后修改之之前的數(shù)據(jù),例例如上面例子子事務(wù)三在事事務(wù)二提交后后想查詢出AA,B,C,D可以通過過Flashhback查查詢來完成。這這也是有Unndo HYPERLINK /searchwhatis/99/5947599.shtml Daata來支持持的。物理實現(xiàn)從上面的邏邏輯實現(xiàn)看,只只是知道了事事務(wù)以及Unndo Daata的

12、作用用,還不清楚楚Oraclle對事務(wù)的的支持到底怎怎么實現(xiàn)的。下下面從物理結(jié)結(jié)構(gòu)上講述OOraclee怎么對事務(wù)務(wù)進行支持。請請先看一個物物理結(jié)構(gòu)圖。圖源自于OOraclee HYPERLINK /searchwhatis/132/5947632.shtml Dataabase 10g: Adminnistraation Worksshop II為了簡化,我我只是用個人人的語言講述述和事務(wù)有關(guān)關(guān)的部件。SSGA可以理理解為全局內(nèi)內(nèi)存。其中 HYPERLINK /searchwhatis/132/5947632.shtml DDatabaase Buuffer HYPERLINK /searc

13、hwhatis/459/5946959.shtml Cachee存放的是從從數(shù)據(jù)文件中中讀取的數(shù)據(jù)據(jù)緩存。紫色色的圓柱體為為數(shù)據(jù)文件。RRedo LLog Buuffer為為重做日志緩緩存,也就是是保存日志的的內(nèi)存塊,一一切的數(shù)據(jù)的的修改都會記記錄在Reddo Logg Bufffer里面。例例如用回事務(wù)務(wù)二更新 HYPERLINK /searchwhatis/25/5948525.shtml keey為1數(shù)據(jù)據(jù)的例子。當(dāng)當(dāng)事務(wù)二更新新key為11數(shù)據(jù)從A到到Z。Oraacle數(shù)據(jù)據(jù)庫引擎會把把key為11的數(shù)據(jù)的 rowidd,修改前數(shù)數(shù)據(jù)A以及修修改后數(shù)據(jù)ZZ都記錄在RRedo LLog

14、Buuffer里里面。如果事事務(wù)二繼續(xù)更更新key為為2的數(shù)據(jù)為為Y,那么kkey為2的的數(shù)據(jù)的roowid,修修改前數(shù)據(jù)BB以及修改后后數(shù)據(jù)Y也記記錄到Reddo Logg Bufffer里面。每每一筆數(shù)據(jù)都都記錄,而且且是流水線性性記錄。一旦旦事務(wù)二進行行提交,LGGWR HYPERLINK /searchwhatis/292/7333792.shtml 進程(Logg Writter,日志志寫進程)就就會把Reddo Logg Bufffer的數(shù)據(jù)據(jù)按順序?qū)懙降絃og DDatafiile里面,也也就是日志數(shù)數(shù)據(jù)文件里面面,當(dāng)寫日志志文件完成,OOraclee數(shù)據(jù)庫引擎擎會生成一個個SC

15、N( HYPERLINK /searchwhatis/494/6026494.shtml ssystemm channge nuumber,系系統(tǒng)更新號),到這時候候Oraclle數(shù)據(jù)庫引引擎會通知調(diào)調(diào)用方提交完完成了。這里里可以看到OOraclee在提交的時時候不必要把把更新數(shù)據(jù)寫寫回數(shù)據(jù)文件件,而是寫到到日志文件里里面。因為順順序?qū)懢€性的的日志文件速速度快很多,而而寫數(shù)據(jù)文件件是需要隨機機讀寫。由于于線性記錄和和SCN號控控制,數(shù)據(jù)庫庫引擎可以通通過redoo log(重做日志文文件)的操作作得到最新的的數(shù)據(jù)。當(dāng)然然在Checckpoinnt的時候數(shù)數(shù)據(jù)文件是最最終還是會更更新的,只是是說

16、事務(wù)提交交的時候更新新數(shù)據(jù)文件不不是必須步驟驟,這樣能很很大的提高性性能。由于這個機機制,回滾變變得很簡單,要要讀沒提交前前之前的SCCN是很容易易的事情。對于初學(xué)者者關(guān)于數(shù)據(jù)庫庫事務(wù)處理的的建議我自己也是是從新手一步步步走過來,現(xiàn)現(xiàn)在也不是老老鳥,算是有有點經(jīng)驗,如如果是剛?cè)腴T門的同學(xué),你你覺得有用就就看一下,沒沒用就過了。對于數(shù)據(jù)庫庫事務(wù)的處理理,開始的時時候不需要很很深入了解數(shù)數(shù)據(jù)庫的原理理,當(dāng)然以后后還是需要了了解的,優(yōu)先先級排后而已已。高優(yōu)先級級如下:首先,事務(wù)務(wù)不是什么高高深神秘的東東西,我從入入行開始所做做的所有系統(tǒng)統(tǒng),包括現(xiàn)在在的嵌入式系系統(tǒng),都用到到事務(wù)。我并并不覺得大部部分

17、系統(tǒng)事務(wù)務(wù)有什么問題題,只是一些些約束和同步步機制,真的的有問題從自自身系統(tǒng)設(shè)計計角度看,不不一定說從數(shù)數(shù)據(jù)庫技術(shù)角角度去找解決決方法。例如如Oraclle的長時間間查詢?nèi)绻鸘Undo HYPERLINK /searchwhatis/99/5947599.shtml DData(歷歷史數(shù)據(jù))給給覆蓋了,OOraclee會拋出異常常ORA-015555: snaapshott too old”,如如果出現(xiàn)這種種問題,我會會從自身系統(tǒng)統(tǒng)設(shè)計角度入入手,為什么么有那么大的的查詢,為什什么在這個查查詢中其他事事務(wù)會更新數(shù)數(shù)據(jù),這些查查詢是否只是是查一次就夠夠了,查的過過程是否需要要鎖住表等等等。然而這個個問題可以通通過數(shù)據(jù)庫調(diào)調(diào)優(yōu)解決,但但是我想問題題的角度首先先是從自身系系統(tǒng)設(shè)計出發(fā)發(fā)。第二,要知知道的是不同同數(shù)據(jù)庫的事事務(wù)類型的區(qū)區(qū)別,例如MMS SQLL Seveer是默認是是自動提交事事務(wù),用的時時候需要知道道每個語句都都有單獨的事事務(wù)在操作。而而Oraclle是類似于于隱式事務(wù),必必須手工 HYPERLINK /searchwhatis/318/5947318.shtml coommit或或者 HYPERLINK /searchw

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論