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

下載本文檔

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

文檔簡(jiǎn)介

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

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

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

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

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

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

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

8、 HYPERLINK /searchwhatis/297/6092797.shtml Trransacction ManaggementtOraclle的事務(wù)的的實(shí)現(xiàn)Oraclle的結(jié)構(gòu)分分邏輯上和物物理上的區(qū)別別。邏輯上的的結(jié)構(gòu)是表空空間,而物理理上的結(jié)構(gòu)是是數(shù)據(jù)文件。邏輯實(shí)現(xiàn)Oraclle下實(shí)現(xiàn)事事務(wù)在邏輯上上是由Unddo HYPERLINK /searchwhatis/458/6028458.shtml Tabblespaace來(lái)實(shí)現(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ù),以支持回回滾,長(zhǎng)時(shí)間間查詢(xún),和fflashbback查詢(xún)?cè)?,以及失敗敗事?wù)恢復(fù)的的功能。由于有了UUndo DData,回回滾事務(wù)變得得容易了,因因?yàn)閁ndoo Dataa保存了修改改前后的數(shù)據(jù)據(jù),保證了事事務(wù)的原子性性。失

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

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

12、作用用,還不清楚楚Oraclle對(duì)事務(wù)的的支持到底怎怎么實(shí)現(xiàn)的。下下面從物理結(jié)結(jié)構(gòu)上講述OOraclee怎么對(duì)事務(wù)務(wù)進(jìn)行支持。請(qǐng)請(qǐng)先看一個(gè)物物理結(jié)構(gòu)圖。圖源自于OOraclee HYPERLINK /searchwhatis/132/5947632.shtml Dataabase 10g: Adminnistraation Worksshop II為了簡(jiǎn)化,我我只是用個(gè)人人的語(yǔ)言講述述和事務(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ù)的的修改都會(huì)記記錄在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ù)庫(kù)引擎會(huì)把把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ù)都都記錄,而且且是流水線(xiàn)性性記錄。一旦旦事務(wù)二進(jìn)行行提交,LGGWR HYPERLINK /searchwhatis/292/7333792.shtml 進(jìn)程(Logg Writter,日志志寫(xiě)進(jìn)程)就就會(huì)把Reddo Logg Bufffer的數(shù)據(jù)據(jù)按順序?qū)懙降絃og DDatafiile里面,也也就是日志數(shù)數(shù)據(jù)文件里面面,當(dāng)寫(xiě)日志志文件完成,OOraclee數(shù)據(jù)庫(kù)引擎擎會(huì)生成一個(gè)個(gè)SC

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

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

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

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論