怎么理解oracle中的事務(wù)-創(chuàng)新互聯(lián)

本篇內(nèi)容主要講解“怎么理解oracle中的事務(wù)”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實(shí)用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“怎么理解oracle中的事務(wù)”吧!

目前累計服務(wù)客戶1000多家,積累了豐富的產(chǎn)品開發(fā)及服務(wù)經(jīng)驗(yàn)。以網(wǎng)站設(shè)計水平和技術(shù)實(shí)力,樹立企業(yè)形象,為客戶提供成都網(wǎng)站制作、網(wǎng)站建設(shè)、網(wǎng)站策劃、網(wǎng)頁設(shè)計、網(wǎng)絡(luò)營銷、VI設(shè)計、網(wǎng)站改版、漏洞修補(bǔ)等服務(wù)。創(chuàng)新互聯(lián)始終以務(wù)實(shí)、誠信為根本,不斷創(chuàng)新和提高建站品質(zhì),通過對領(lǐng)先技術(shù)的掌握、對創(chuàng)意設(shè)計的研究、對客戶形象的視覺傳遞、對應(yīng)用系統(tǒng)的結(jié)合,為客戶提供更好的一站式互聯(lián)網(wǎng)解決方案,攜手廣大客戶,共同發(fā)展進(jìn)步。

一組SQL語句操作要成為事務(wù),數(shù)據(jù)庫管理系統(tǒng)必須保證這組操作的原子性(Atomicity)、一致性(consistency)、隔離性(Isolation)和持久性(Durability),這就是ACDI特性。

原子性:是指事物中包含的所有操作要么全做,要么全不做,也就是說事物的所有活動在數(shù)據(jù)庫中要么全部反映,要么全部不反映,一保證數(shù)據(jù)時一致的。

一致性:是指數(shù)據(jù)庫在事務(wù)操作前和操作處理,其中的數(shù)據(jù)必須都滿足業(yè)務(wù)規(guī)定的約束。

隔離性:是指數(shù)據(jù)庫允許多個并發(fā)事務(wù)同時對其中的數(shù)據(jù)進(jìn)行讀寫好修改的能力,隔離性可以防止事務(wù)的并發(fā)執(zhí)行時,由于他們的操作命令交叉執(zhí)行而導(dǎo)致的數(shù)據(jù)不一致狀態(tài)。

持久性:是指當(dāng)事務(wù)結(jié)束后,它對數(shù)據(jù)庫中的影響是永久的,即便系統(tǒng)遇到故障的情況下,數(shù)據(jù)也不會丟失。

數(shù)據(jù)庫事務(wù)由以下的部分組成:

一個或多個DML 語句

一個 DDL(Data Definition Language – 數(shù)據(jù)定義語言) 語句

一個 DCL(Data Control Language – 數(shù)據(jù)控制語言) 語句

事務(wù)的執(zhí)行過程:

以第一個 DML 語句的執(zhí)行作為開始

以下面的其中之一作為結(jié)束:

COMMIT 或 ROLLBACK 語句

DDL 或 DCL 語句(自動提交)

用戶會話正常結(jié)束

系統(tǒng)異常終了

備注:使用COMMIT 和 ROLLBACK語句,我們可以: 確保數(shù)據(jù)完整性;數(shù)據(jù)改變被提交之前預(yù)覽;將邏輯上相關(guān)的操作分組。

事務(wù)控制語句

Set transaction:設(shè)置事務(wù)的屬性

Set constrains:設(shè)置當(dāng)前事務(wù)的約束模式,設(shè)置約束是修改數(shù)據(jù)的時候,立即起作用,還是當(dāng)前事務(wù)結(jié)束后應(yīng)用。

Savepoint :在事務(wù)中建立一個存儲點(diǎn),回滾時,可以指定回滾到什么地方,然后重新執(zhí)行

Release savepoint:刪除一個存儲點(diǎn)

Rollback:回滾事務(wù)。級取消對數(shù)據(jù)庫所做的任何修改

Commit:提交事務(wù),把事務(wù)中對數(shù)據(jù)庫的修改進(jìn)行永久保存

數(shù)據(jù)異常

因?yàn)镺racle中支持多個事務(wù)并發(fā)執(zhí)行,所以會出現(xiàn)下面的數(shù)據(jù)異常。

錯讀|臟讀:當(dāng)user1正在讀數(shù)據(jù)庫中的表A時,user2正在修改表A,user2修改完了,user1又讀一遍表A,user1讀出的是修改過的數(shù)據(jù),而user2又撤消修改了,user1的讀取表A,稱為“錯讀”或者“臟讀”

非重復(fù)讀|不重復(fù)讀:是指一個事務(wù)讀取數(shù)據(jù)庫中的數(shù)據(jù)后,另一個事務(wù)則更新了數(shù)據(jù),當(dāng)?shù)谝粋€事務(wù)再次讀取其中的數(shù)據(jù)時,就會發(fā)現(xiàn)數(shù)據(jù)已經(jīng)發(fā)生了改變,這就是非重復(fù)讀取。非重復(fù)讀取所導(dǎo)致的結(jié)果就是一個事務(wù)前后兩次讀取的數(shù)據(jù)不相同。

假讀|幻讀:如果一個事務(wù)基于某個條件讀取數(shù)據(jù)后,另一個事務(wù)則更新了同一個表中的數(shù)據(jù),這時第一個事務(wù)再次讀取數(shù)據(jù)時,根據(jù)搜索的條件返回了不同的行,這就是假讀。

事務(wù)中遇到的這些異常與事務(wù)的隔離性設(shè)置有關(guān),事務(wù)的隔離性設(shè)置越多,異常就出現(xiàn)的越少,但并發(fā)效果就越低,事務(wù)的隔離性設(shè)置越少,異常出現(xiàn)的越多,并發(fā)效果越高。

選擇隔離層

 針對3中讀取的數(shù)據(jù)時產(chǎn)生的不一致現(xiàn)象,在ANSI SQL標(biāo)準(zhǔn)92中定義了4個事務(wù)的隔離級別.如下圖所示:

隔離級別

錯讀|臟讀

非重復(fù)讀|不重復(fù)讀

假讀|幻讀

Read uncommitted(非提交讀)

Read committed(提交讀)

Repeatable read(可重復(fù)讀)

Serializable(串行讀)

Oracle默認(rèn)的隔離級別是read committed

Oracle支持上述地址隔離層中的兩種read committed和Serializable除此之外oracle中還設(shè)置了read only和read write隔離層

Serializable:設(shè)置事務(wù)的隔離層為它時,

Read only :事務(wù)中不能有任何修改數(shù)據(jù)庫中的數(shù)據(jù)的操作語句,如insert、update、delete、create語句,read only 是Serializable的子集,區(qū)別是read only只讀,Serializable和執(zhí)行DML語句。

Read write:是默認(rèn)設(shè)置,改選項(xiàng)表示在事務(wù)中可以有訪問語句。修改語句。但不經(jīng)常使用

設(shè)置事務(wù)的屬性

建立 set transaction的語句

如:

Set transaction read noly

或:

Set transaction read write

或:

Set transaction isolation level read commnitted

或:

Set transaction isolation level serializable

注意:這些語句是互斥的。不能同時設(shè)置兩個或兩個以上的選項(xiàng)

到此,相信大家對“怎么理解oracle中的事務(wù)”有了更深的了解,不妨來實(shí)際操作一番吧!這里是創(chuàng)新互聯(lián)網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!

分享標(biāo)題:怎么理解oracle中的事務(wù)-創(chuàng)新互聯(lián)
分享地址:http://muchs.cn/article6/djieog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供微信小程序、云服務(wù)器、自適應(yīng)網(wǎng)站、面包屑導(dǎo)航、軟件開發(fā)電子商務(wù)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

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