版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、SQL 和Oracle對(duì)數(shù)據(jù)庫事務(wù)處理的差異性作者: Jake, 出處:IT專家網(wǎng)論壇,責(zé)任編輯: 陳子琪, 2009-100-11 113:00在吉日嘎拉拉的軟件編程程走火入魔之之:數(shù)據(jù)庫事事務(wù)處理入門門(適合初學(xué)學(xué)者閱讀)文文章中關(guān)于MMS SQLL Servver和Orracle對(duì)對(duì)數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性引起一些些爭論,因此此記錄我對(duì)數(shù)數(shù)據(jù)庫事務(wù)處處理的想法。背景在吉日嘎拉拉的軟件編程程走火入魔之之:數(shù)據(jù)庫事事務(wù)處理入門門(適合初學(xué)學(xué)者閱讀)文文章中關(guān)于MMS SQLL HYPERLINK /searchwhatis/497/5948997.shtml Servver和Orracle
2、對(duì)對(duì)數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性引起一些些爭論,因此此記錄我對(duì)數(shù)數(shù)據(jù)庫事務(wù)處處理的想法。簡介本文講述MMS SQLL Servver和Orracle對(duì)對(duì)數(shù)據(jù)庫事務(wù)務(wù)處理的差異異性,以及OOraclee如何對(duì)事務(wù)務(wù)處理的實(shí)現(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ù)實(shí)現(xiàn)事務(wù)主主要有兩大功功能:1.保證數(shù)數(shù)據(jù)庫的coonsisttent(一一致性狀態(tài)),保持所有有依賴關(guān)系以以及約束一致致)。哪怕數(shù)數(shù)據(jù)庫管理系系統(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)的帳就不平平了。也例如如有些銷售系系統(tǒng)的匯總表表和明細(xì)表,是是一個(gè)主表和和一個(gè)從表,需需要同步更新新。2.并發(fā)時(shí)時(shí)分離不同事事務(wù)操作。例例如編輯過程程中的數(shù)據(jù)不不給其他事務(wù)務(wù)查詢到。這這也是相對(duì)的的,在特效需需求下可能要要支持dirrty reead(臟讀讀),但不是是這里討論的的范圍了。SQL SServerr 20088 的事務(wù)類類型1.自動(dòng)提提交事務(wù) AAutocoommit Transsactioons這是SQLL Servver默認(rèn)的的事務(wù)類型,每每一條單獨(dú)的的SQL語句句(SQL stateement)都是單獨(dú)的的一個(gè)事務(wù),語語句執(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 語句句來打開事務(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語句的的時(shí)候自動(dòng)打打開事務(wù)。調(diào)調(diào)用方需要調(diào)調(diào)用COMMMIT 或者者 ROLLLBACK TRANSSACTIOON 來提交交或者回滾。當(dāng)當(dāng)數(shù)據(jù)庫引擎擎執(zhí)行下一個(gè)個(gè)SQL語句句時(shí)又自動(dòng)打打開一個(gè)新事事務(wù)。參考:Coontrollling Transsactioons (
7、DDatabaase Enngine)Oraclee的事務(wù)類型型Oraclle的事務(wù)處處理類型有點(diǎn)點(diǎn)像SQL HYPERLINK /searchwhatis/497/5948997.shtml Serveer的隱式事事務(wù)。當(dāng)執(zhí)行行到第一個(gè)可可執(zhí)行的SQQL語句時(shí)自自動(dòng)打開事務(wù)務(wù),然后需要要調(diào)用方執(zhí)行行 HYPERLINK /searchwhatis/318/5947318.shtml commiit或者 HYPERLINK /searchwhatis/218/6093718.shtml rolllback來來提交或者回回滾事務(wù),如如果有DDLL語句,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來實(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ù),以支持回回滾,長時(shí)間間查詢,和fflashbback查詢?cè)?,以及失敗敗事?wù)恢復(fù)的的功能。由于有了UUndo DData,回回滾事務(wù)變得得容易了,因因?yàn)閁ndoo 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)。同時(shí)Unddo Datta也支持長長時(shí)間查詢(Read-consiistentt),例如有有表格T,主主鍵為 HYPERLINK /searchwhatis/25/5948525.shtml keyy,有字段為為f1,數(shù)據(jù)據(jù)如下,盡管管只有4條數(shù)數(shù)據(jù),假設(shè)需需要很長時(shí)間間進(jìn)行查詢。事務(wù)一開始始查詢,一直直沒結(jié)束,而而事務(wù)二開始始修改 HYPERLINK /searchwhatis/25/5948
11、525.shtml keyy為1的數(shù)據(jù)據(jù)為Z,事務(wù)務(wù)二進(jìn)行提交交,數(shù)據(jù)變成成下面的表格格。但是事務(wù)務(wù)一查詢結(jié)束束的時(shí)候還是是讀出A,BB,C,D,因因?yàn)椴樵兪菑膹腢ndo中中讀出快照。Flashhback查查詢是Oraacle 110g引進(jìn)的的功能,可以以查詢出提交交之后修改之之前的數(shù)據(jù),例例如上面例子子事務(wù)三在事事務(wù)二提交后后想查詢出AA,B,C,D可以通過過Flashhback查查詢來完成。這這也是有Unndo HYPERLINK /searchwhatis/99/5947599.shtml Daata來支持持的。物理實(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為了簡化,我我只是用個(gè)人人的語言講述述和事務(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ù)庫引擎會(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ù)都都記錄,而且且是流水線性性記錄。一旦旦事務(wù)二進(jìn)行行提交,LGGWR HYPERLINK /searchwhatis/292/7333792.shtml 進(jìn)程(Logg Writter,日志志寫進(jìn)程)就就會(huì)把Reddo Logg Bufffer的數(shù)據(jù)據(jù)按順序?qū)懙降絃og DDatafiile里面,也也就是日志數(shù)數(shù)據(jù)文件里面面,當(dāng)寫日志志文件完成,OOraclee數(shù)據(jù)庫引擎擎會(huì)生成一個(gè)個(gè)SC
15、N( HYPERLINK /searchwhatis/494/6026494.shtml ssystemm channge nuumber,系系統(tǒng)更新號(hào)),到這時(shí)候候Oraclle數(shù)據(jù)庫引引擎會(huì)通知調(diào)調(diào)用方提交完完成了。這里里可以看到OOraclee在提交的時(shí)時(shí)候不必要把把更新數(shù)據(jù)寫寫回?cái)?shù)據(jù)文件件,而是寫到到日志文件里里面。因?yàn)轫橅樞驅(qū)懢€性的的日志文件速速度快很多,而而寫數(shù)據(jù)文件件是需要隨機(jī)機(jī)讀寫。由于于線性記錄和和SCN號(hào)控控制,數(shù)據(jù)庫庫引擎可以通通過redoo log(重做日志文文件)的操作作得到最新的的數(shù)據(jù)。當(dāng)然然在Checckpoinnt的時(shí)候數(shù)數(shù)據(jù)文件是最最終還是會(huì)更更新的,只是是說
16、事務(wù)提交交的時(shí)候更新新數(shù)據(jù)文件不不是必須步驟驟,這樣能很很大的提高性性能。由于這個(gè)機(jī)機(jī)制,回滾變變得很簡單,要要讀沒提交前前之前的SCCN是很容易易的事情。對(duì)于初學(xué)者者關(guān)于數(shù)據(jù)庫庫事務(wù)處理的的建議我自己也是是從新手一步步步走過來,現(xiàn)現(xiàn)在也不是老老鳥,算是有有點(diǎn)經(jīng)驗(yàn),如如果是剛?cè)腴T門的同學(xué),你你覺得有用就就看一下,沒沒用就過了。對(duì)于數(shù)據(jù)庫庫事務(wù)的處理理,開始的時(shí)時(shí)候不需要很很深入了解數(shù)數(shù)據(jù)庫的原理理,當(dāng)然以后后還是需要了了解的,優(yōu)先先級(jí)排后而已已。高優(yōu)先級(jí)級(jí)如下:首先,事務(wù)務(wù)不是什么高高深神秘的東東西,我從入入行開始所做做的所有系統(tǒng)統(tǒng),包括現(xiàn)在在的嵌入式系系統(tǒng),都用到到事務(wù)。我并并不覺得大部部分
17、系統(tǒng)事務(wù)務(wù)有什么問題題,只是一些些約束和同步步機(jī)制,真的的有問題從自自身系統(tǒng)設(shè)計(jì)計(jì)角度看,不不一定說從數(shù)數(shù)據(jù)庫技術(shù)角角度去找解決決方法。例如如Oraclle的長時(shí)間間查詢?nèi)绻鸘Undo HYPERLINK /searchwhatis/99/5947599.shtml DData(歷歷史數(shù)據(jù))給給覆蓋了,OOraclee會(huì)拋出異常常ORA-015555: snaapshott too old”,如如果出現(xiàn)這種種問題,我會(huì)會(huì)從自身系統(tǒng)統(tǒng)設(shè)計(jì)角度入入手,為什么么有那么大的的查詢,為什什么在這個(gè)查查詢中其他事事務(wù)會(huì)更新數(shù)數(shù)據(jù),這些查查詢是否只是是查一次就夠夠了,查的過過程是否需要要鎖住表等等等。然而這個(gè)個(gè)問題可以通通過數(shù)據(jù)庫調(diào)調(diào)優(yōu)解決,但但是我想問題題的角度首先先是從自身系系統(tǒng)設(shè)計(jì)出發(fā)發(fā)。第二,要知知道的是不同同數(shù)據(jù)庫的事事務(wù)類型的區(qū)區(qū)別,例如MMS SQLL Seveer是默認(rèn)是是自動(dòng)提交事事務(wù),用的時(shí)時(shí)候需要知道道每個(gè)語句都都有單獨(dú)的事事務(wù)在操作。而而Oraclle是類似于于隱式事務(wù),必必須手工 HYPERLINK /searchwhatis/318/5947318.shtml coommit或或者 HYPERLINK /searchw
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 紅樓夢第十七回賞析
- 2026年連云港師范高等專科學(xué)校單招職業(yè)傾向性考試題庫及答案詳解一套
- 《藥品生物檢定技術(shù)》創(chuàng)新課件-數(shù)字化中藥館-創(chuàng)新健康服務(wù)模式
- 云資源優(yōu)化運(yùn)維協(xié)議
- 智能窗簾安裝調(diào)試師崗位招聘考試試卷及答案
- 2026年消防隊(duì)工作計(jì)劃(3篇)
- 2025年度基層衛(wèi)生人員全員在線培訓(xùn)考試試題及答案
- 2025年CPA審計(jì)真題及答案解析
- 2026年護(hù)理部年度工作計(jì)劃與戰(zhàn)略部署
- 2025年安徽皖江高速公路有限公司高速公路收費(fèi)人員招聘考試筆試試題及答案
- 2025年沈陽華晨專用車有限公司公開招聘備考筆試題庫及答案解析
- 2025年云南省人民檢察院聘用制書記員招聘(22人)筆試考試參考試題及答案解析
- 2025天津市第二批次工會(huì)社會(huì)工作者招聘41人考試筆試備考試題及答案解析
- 江西省三新協(xié)同體2025-2026年高一上12月地理試卷(含答案)
- 2025新疆維吾爾自治區(qū)哈密市法院、檢察院系統(tǒng)招聘聘用制書記員(31人)筆試考試參考試題及答案解析
- 空調(diào)安全知識(shí)培訓(xùn)
- 2025重慶醫(yī)科大學(xué)附屬兒童醫(yī)院宜賓醫(yī)院招聘34人考試筆試備考題庫及答案解析
- 《醫(yī)學(xué)倫理》期末考試復(fù)習(xí)題庫(含答案)
- 初中生金融知識(shí)
- 暖通設(shè)備運(yùn)行調(diào)試方案
- 流感相關(guān)知識(shí)試題及答案
評(píng)論
0/150
提交評(píng)論