国产又黄又粗又长又大的视频-色婷婷久久一区二区爽爽爽-欧美日本韩国国产在线观-尹人香蕉琪琪在现观看

成都網(wǎng)站建設(shè)|域名注冊|虛擬主機|網(wǎng)站制作|網(wǎng)站案例|網(wǎng)站優(yōu)化|網(wǎng)站推廣|企業(yè)郵局|服務(wù)器租用|廣告設(shè)計

虛擬主機

服務(wù)器租用

企業(yè)郵箱

網(wǎng)站程序

營銷推廣

網(wǎng)站建設(shè)

域名注冊

前端開發(fā)

網(wǎng)站備案

移動互聯(lián)網(wǎng)

SQL Server與Oracle數(shù)據(jù)庫事務(wù)處理橫向?qū)Ρ?/h1>
  • 作者:創(chuàng)新互聯(lián) 文章來源:數(shù)據(jù)庫 點擊數(shù): 更新時間:2013-02-20
  • 簡介
    本文講述MS SQL Server和Oracle
    數(shù)據(jù)庫事務(wù)處理的差異性,以及Oracle如何對事務(wù)處理的實現(xiàn)。
    什么是事務(wù)
    數(shù)據(jù)庫事務(wù)(Database Transaction)是一組數(shù)據(jù)庫操作的處理單元。事務(wù)符合ACID的特性:
    Atomic:原子性,要么全部要么一無所有。All or None.
    Consistent:一致性,所有依賴關(guān)系以及約束一致。
    Isolated:分離性,不同事務(wù)不互相影響。
    Durable:持久性,提交事務(wù)的數(shù)據(jù)需要持久化。
    為什么要使用事務(wù)
    實現(xiàn)事務(wù)主要有兩大功能:
    1.保證數(shù)據(jù)庫的consistent(一致性狀態(tài)),保持所有依賴關(guān)系以及約束一致)。哪怕數(shù)據(jù)庫管理系統(tǒng)出現(xiàn)故障時(例如斷電),也能恢復(fù)到一致性狀態(tài)。例如一個銀行轉(zhuǎn)帳系統(tǒng),張三給李四轉(zhuǎn)3000圓RMB,張三帳號上減3000和李四帳號上加3000需要同時完成,否則系統(tǒng)的帳就不平了。也例如有些銷售系統(tǒng)的匯總表和明細(xì)表,是一個主表和一個從表,需要同步更新。
    2.并發(fā)時分離不同事務(wù)操作。例如編輯過程中的數(shù)據(jù)不給其他事務(wù)查詢到。這也是相對的,在特效需求下可能要支持dirty read(臟讀),但不是這里討論的范圍了。
    SQL Server 2008 的事務(wù)類型
    1.自動提交事務(wù) Autocommit Transactions
    這是SQL Server默認(rèn)的事務(wù)類型,每一條單獨的SQL語句(SQL statement)都是單獨的一個事務(wù),語句執(zhí)行完畢后自動提交。調(diào)用方不需要手工控制事務(wù)流程。
    2.顯示事務(wù) Explicit Transactions
    調(diào)用方需要調(diào)用API或者使用T-SQL的BEGIN TRANSACTION 語句來打開事務(wù)。需要調(diào)用COMMIT 或者 ROLLBACK TRANSACTION 來提交或者回滾。
    3.隱式事務(wù) Implicit Transactions
    使用SET IMPLICIT_TRANSACTIONS ON把事務(wù)模式變成隱式模式。調(diào)用方不需要執(zhí)行BEGIN TRANSACTION 語句來打開事務(wù)。數(shù)據(jù)庫引擎執(zhí)行到SQL語句的時候自動打開事務(wù)。調(diào)用方需要調(diào)用COMMIT 或者 ROLLBACK TRANSACTION 來提交或者回滾。當(dāng)數(shù)據(jù)庫引擎執(zhí)行下一個SQL語句時又自動打開一個新事務(wù)。
    參考:Controlling Transactions (Database Engine)
    Oracle的事務(wù)類型
    Oracle的事務(wù)處理類型有點像SQL Server的隱式事務(wù)。當(dāng)執(zhí)行到第一個可執(zhí)行的SQL語句時自動打開事務(wù),然后需要調(diào)用方執(zhí)行commit或者rollback來提交或者回滾事務(wù),如果有DDL語句,Oracle也會自動提交事務(wù)的。
    參考:Transaction Management
    Oracle的事務(wù)的實現(xiàn)
    Oracle的結(jié)構(gòu)分邏輯上和物理上的區(qū)別。邏輯上的結(jié)構(gòu)是表空間,而物理上的結(jié)構(gòu)是數(shù)據(jù)文件。
    邏輯實現(xiàn)
    Oracle下實現(xiàn)事務(wù)在邏輯上是由Undo Tablespace來實現(xiàn)的。Undo Tablespace包含Undo Segements(段),而Undo Segements包含Undo Data。Undo Data是支持事務(wù)的邏輯單元。
    Undo Data用于保存修改前后的數(shù)據(jù),以支持回滾,長時間查詢,和flashback查詢,以及失敗事務(wù)恢復(fù)的功能。
    由于有了Undo Data,回滾事務(wù)變得容易了,因為Undo Data保存了修改前后的數(shù)據(jù),保證了事務(wù)的原子性。失敗事務(wù)恢復(fù)和事務(wù)回滾類似,當(dāng)網(wǎng)絡(luò)中斷或者其他原因?qū)е率聞?wù)異常停止,數(shù)據(jù)庫引擎可以恢復(fù)到一致性狀態(tài)。
    同時Undo Data也支持長時間查詢(Read-consistent),例如有表格T,主鍵為key,有字段為f1,數(shù)據(jù)如下,盡管只有4條數(shù)據(jù),假設(shè)需要很長時間進(jìn)行查詢。
    key f1
    1 A
    2 B
    3 C
    4 D
    事務(wù)一開始查詢,一直沒結(jié)束,而事務(wù)二開始修改key為1的數(shù)據(jù)為Z,事務(wù)二進(jìn)行提交,數(shù)據(jù)變成下面的表格。但是事務(wù)一查詢結(jié)束的時候還是讀出A,B,C,D,因為查詢是從Undo中讀出快照。
    key f1
    1 Z
    2 B
    3 C
    4 D
    Flashback查詢是Oracle 10g引進(jìn)的功能,可以查詢出提交之后修改之前的數(shù)據(jù),例如上面例子事務(wù)三在事務(wù)二提交后想查詢出A,B,C,D可以通過Flashback查詢來完成。這也是有Undo Data來支持的。
    物理實現(xiàn)
    從上面的邏輯實現(xiàn)看,只是知道了事務(wù)以及Undo Data的作用,還不清楚Oracle對事務(wù)的支持到底怎么實現(xiàn)的。下面從物理結(jié)構(gòu)上講述Oracle怎么對事務(wù)進(jìn)行支持。請先看一個物理結(jié)構(gòu)圖。
    為了簡化,我只是用個人的語言講述和事務(wù)有關(guān)的部件。SGA可以理解為全局內(nèi)存。其中Database Buffer Cache存放的是從數(shù)據(jù)文件中讀取的數(shù)據(jù)緩存。紫色的圓柱體為數(shù)據(jù)文件。Redo Log Buffer為重做日志緩存,也就是保存日志的內(nèi)存塊,一切的數(shù)據(jù)的修改都會記錄在Redo Log Buffer里面。例如用回事務(wù)二更新key為1數(shù)據(jù)的例子。當(dāng)事務(wù)二更新key為1數(shù)據(jù)從A到Z。Oracle數(shù)據(jù)庫引擎會把key為1的數(shù)據(jù)的rowid,修改前數(shù)據(jù)A以及修改后數(shù)據(jù)Z都記錄在Redo Log Buffer里面。如果事務(wù)二繼續(xù)更新key為2的數(shù)據(jù)為Y,那么key為2的數(shù)據(jù)的rowid,修改前數(shù)據(jù)B以及修改后數(shù)據(jù)Y也記錄到Redo Log Buffer里面。每一筆數(shù)據(jù)都記錄,而且是流水線性記錄。一旦事務(wù)二進(jìn)行提交,LGWR進(jìn)程(Log Writer,日志寫進(jìn)程)就會把Redo Log Buffer的數(shù)據(jù)按順序?qū)懙絃og Datafile里面,也就是日志數(shù)據(jù)文件里面,當(dāng)寫日志文件完成,Oracle數(shù)據(jù)庫引擎會生成一個SCN(system change number,系統(tǒng)更新號),到這時候Oracle數(shù)據(jù)庫引擎會通知調(diào)用方提交完成了。這里可以看到Oracle在提交的時候不必要把更新數(shù)據(jù)寫回數(shù)據(jù)文件,而是寫到日志文件里面。因為順序?qū)懢性的日志文件速度快很多,而寫數(shù)據(jù)文件是需要隨機讀寫。由于線性記錄和SCN號控制,數(shù)據(jù)庫引擎可以通過redo log(重做日志文件)的操作得到最新的數(shù)據(jù)。當(dāng)然在Checkpoint的時候數(shù)據(jù)文件是最終還是會更新的,只是說事務(wù)提交的時候更新數(shù)據(jù)文件不是必須步驟,這樣能很大的提高性能。
    由于這個機制,回滾變得很簡單,要讀沒提交前之前的SCN是很容易的事情。
    對于初學(xué)者關(guān)于數(shù)據(jù)庫事務(wù)處理的建議
    我自己也是從新手一步步走過來,現(xiàn)在也不是老鳥,算是有點經(jīng)驗,如果是剛?cè)腴T的同學(xué),你覺得有用就看一下,沒用就過了。
    對于數(shù)據(jù)庫事務(wù)的處理,開始的時候不需要很深入了解數(shù)據(jù)庫的原理,當(dāng)然以后還是需要了解的,優(yōu)先級排后而已。高優(yōu)先級如下:
    首先,事務(wù)不是什么高深神秘的東西,我從入行開始所做的所有系統(tǒng),包括現(xiàn)在的嵌入式系統(tǒng),都用到事務(wù)。我并不覺得大部分系統(tǒng)事務(wù)有什么問題,只是一些約束和同步機制,真的有問題從自身系統(tǒng)設(shè)計角度看,不一定說從數(shù)據(jù)庫技術(shù)角度去找解決方法。例如Oracle的長時間查詢?nèi)绻鸘ndo Data(歷史數(shù)據(jù))給覆蓋了,Oracle會拋出異常"ORA-01555: snapshot too old”,如果出現(xiàn)這種問題,我會從自身系統(tǒng)設(shè)計角度入手,為什么有那么大的查詢,為什么在這個查詢中其他事務(wù)會更新數(shù)據(jù),這些查詢是否只是查一次就夠了,查的過程是否需要鎖住表等等。然而這個問題可以通過數(shù)據(jù)庫調(diào)優(yōu)解決,但是我想問題的角度首先是從自身系統(tǒng)設(shè)計出發(fā)。
    第二,要知道的是不同數(shù)據(jù)庫的事務(wù)類型的區(qū)別,例如MS SQL Sever是默認(rèn)是自動提交事務(wù),用的時候需要知道每個語句都有單獨的事務(wù)在操作。而Oracle是類似于隱式事務(wù),必須手工commit或者rollback。
    第三,使用事務(wù)要知道一一對應(yīng),特別是嵌套事務(wù)的時候,有始有終。很多問題時候發(fā)生終的時候,注意異常處理需要結(jié)束已經(jīng)打開的事務(wù)。
    第一點是心理問題,第二三點是技術(shù)問題,做好我覺得就可以入門開發(fā)系統(tǒng)了。以后碰到問題在一步步深入。

移動互聯(lián)網(wǎng) | 網(wǎng)站備案 | 前端開發(fā) | 域名注冊 | 網(wǎng)站建設(shè) | 營銷推廣 | 網(wǎng)站程序 | 虛擬主機 | 企業(yè)郵箱 | 服務(wù)器租用 | 熱門搜索
服務(wù)電話:028-86922220 13518219792 公司地址:成都市太升南路288號錦天國際A幢10樓2號
企業(yè)郵箱:service@cdxwcx.com 版權(quán)所有:成都創(chuàng)新互聯(lián)科技有限公司 蜀ICP備09010846號 成都網(wǎng)站建設(shè)
數(shù)據(jù)庫 SQL與Oracl事務(wù)處理能力對比
色一情一伦一区二区三| 青青操视频在线播放免费| 亚洲欧美日韩中文字幕二欧美| 大香蕉大香蕉手机在线视频| 国产级别精品一区二区视频| 激情视频在线视频在线视频| 中文字幕日韩欧美亚洲午夜| 国产欧洲亚洲日产一区二区| 国产毛片av一区二区三区小说| 国产精品福利一级久久| 亚洲专区一区中文字幕| 久久这里只有精品中文字幕| 扒开腿狂躁女人爽出白浆av| 日本高清一道一二三区四五区 | 美女露小粉嫩91精品久久久| 尹人大香蕉一级片免费看| 91天堂免费在线观看| 日本欧美视频在线观看免费| 色播五月激情五月婷婷| 精品少妇一区二区三区四区| 日韩在线欧美一区二区| 日本高清不卡在线一区| 日本免费一级黄色录像| 午夜免费精品视频在线看| 亚洲欧美国产网爆精品| 日韩欧美一区二区黄色| 少妇熟女亚洲色图av天堂| 欧美一级内射一色桃子| 国产精品蜜桃久久一区二区| 久热这里只有精品九九| 国产av熟女一区二区三区四区 | 日本女人亚洲国产性高潮视频| 日韩一级免费中文字幕视频| 护士又紧又深又湿又爽的视频| 日本高清二区视频久二区| 出差被公高潮久久中文字幕| 日韩中文高清在线专区| 出差被公高潮久久中文字幕| 国产精品午夜福利免费在线| 欧美成人精品国产成人综合| 国产精品一区二区丝袜|