亚洲Aⅴ无码Av红楼在线观看_国产午夜福利涩爱AⅤ_国产sm调教一区二区三区_精品人妻一区二区三区不卡毛片

始創(chuàng)于2000年 股票代碼:831685
咨詢熱線:0371-60135900 注冊有禮 登錄
  • 掛牌上市企業(yè)
  • 60秒人工響應(yīng)
  • 99.99%連通率
  • 7*24h人工
  • 故障100倍補(bǔ)償
全部產(chǎn)品
您的位置: 網(wǎng)站首頁 > 幫助中心>文章內(nèi)容

Oracle事務(wù) 行級鎖 保存點(diǎn) 回滾 提交

發(fā)布時(shí)間:  2012/9/5 17:36:02

Oracle事務(wù)

一般事務(wù)(DML)即數(shù)據(jù)修改(增、刪、改)的事務(wù)
事務(wù)會(huì)將所有在事務(wù)中被修改的數(shù)據(jù)行加上鎖(行級鎖),來阻止其它人(會(huì)話)同時(shí)對這些數(shù)據(jù)的修改操作。
當(dāng)事務(wù)被提交或回滾后,這些數(shù)據(jù)才會(huì)被釋放鎖。

舉個(gè)例子:-
 

當(dāng)A操作一條數(shù)據(jù)N1后,暫未提交事務(wù) ,此時(shí)B又上來操作同一條數(shù)據(jù)N1,這時(shí)的情況是:
1、所有除A以外的人看不到被A所修改后的數(shù)據(jù)
2、B會(huì)處于等待狀態(tài),直到A提交或回滾了針對這條數(shù)據(jù)的修改(這也就是行級鎖的概念)
3、當(dāng)A提交事務(wù)后,所有人可以看到被A修改后的數(shù)據(jù),看不到B修改后的數(shù)據(jù)。但B能看到自己修改后的數(shù)據(jù)(與A一樣,因?yàn)锽還未提交事務(wù))。
4、當(dāng)B提交事務(wù)后,所有人可以看到被B修改后的數(shù)據(jù)。

由上可以看出,對同一條數(shù)據(jù)的事務(wù)處理,必須按先后順序進(jìn)行。
即:A先提交了事務(wù)后,B才可以提交事務(wù),否則B將無法對這條數(shù)據(jù)進(jìn)行修改(B會(huì)在操作這條數(shù)據(jù)時(shí)處于等待狀態(tài),直到A提交或回滾了事務(wù),釋放了這行數(shù)據(jù)的鎖)。

這里注意一點(diǎn),這里所說有A與B并不是指二個(gè)Oracle帳戶,而是二個(gè)連接會(huì)話。上面只是為了方便舉例。
就是說即使是在同一臺(tái)電腦上用同一個(gè)Oracle帳戶,但同時(shí)分別打開了二個(gè)連接會(huì)話(比如同時(shí)打開二個(gè)PL/SQL并用相同帳戶連接到同一個(gè)庫中),就會(huì)被視為A、B兩個(gè)人。

在PS/SQL中,對數(shù)據(jù)修改完后,如果用戶未提交事務(wù),但關(guān)閉或斷開了PS/SQL,此時(shí)Oracle會(huì)立即提交此會(huì)話的事務(wù)。

我們可以事務(wù)中使用保存點(diǎn)來回滾到指定的時(shí)間節(jié)點(diǎn)上來,但如果用提交事務(wù)(commit)后,所有保存點(diǎn)將被刪除。

舉個(gè)舉子:

savepoint a1;    --設(shè)置一個(gè)保存點(diǎn) a1;

update tmp set username='張三' where userid='101'  --修改一條數(shù)據(jù)

savepoint a2;   --設(shè)置一個(gè)保存點(diǎn) a1;

update tmp set username='李四' where userid='102  --再修改一條數(shù)據(jù)

 

rollback to a2;   --回滾到a2 保存點(diǎn)。 此時(shí)在 a2 保存點(diǎn)之后的所有數(shù)據(jù)修改視為無效。

rollback to a1;   --這里可以再從a2保存點(diǎn)再回滾到a1 保存點(diǎn)。 此時(shí)在 a1 保存點(diǎn)之后的所有數(shù)據(jù)修改視為無效。

rollback;           --回滾全部。即撤消至上一次提交事務(wù)后的所有數(shù)據(jù)修改。

commit;  --提交事務(wù) 將回滾后的事務(wù)提交,并會(huì)刪除所有保存點(diǎn)。

注意:我們可以從a2向前再回滾到a1 ,但無法從a1回滾到a2。也就是只能向前回滾,不能從前面的點(diǎn)再向后回滾!

只讀事務(wù) 即,只用于select 查詢的事務(wù)

只讀事務(wù)主要用于在某一個(gè)時(shí)間點(diǎn)對數(shù)據(jù)的查詢統(tǒng)計(jì)。如:在18:00創(chuàng)建一個(gè)只讀事務(wù),然后可以開始統(tǒng)計(jì)某張表的記錄數(shù)。此時(shí)18:00之后新添加到這張表中的數(shù)據(jù)就不會(huì)進(jìn)入到統(tǒng)計(jì)中去。也就是創(chuàng)建只讀事務(wù)的會(huì)話連接人,將無法看到在創(chuàng)建只讀事務(wù)之后其它任何人對數(shù)據(jù)的真實(shí)修改。

方法是:

set transaction read only;  --在此之后,擁有此會(huì)話的連接人將無法看到其它人對數(shù)據(jù)的任何改動(dòng)。用戶可以用select 進(jìn)行此時(shí)間點(diǎn)的統(tǒng)計(jì)查詢

set transaction read write;  --取消只讀事務(wù)

只讀事務(wù)沒有回滾和提交的功能也不記錄回滾LOG。

只讀事務(wù)最大的用處是保證在某個(gè)時(shí)間點(diǎn)查詢結(jié)果的一致性。換句話說,如果你要統(tǒng)計(jì)很多信息,有多個(gè)select查詢時(shí),但你執(zhí)行完第一個(gè)查詢后(如用戶信息統(tǒng)計(jì)),可能其它人進(jìn)來修改了某些數(shù)據(jù)你正在查詢的數(shù)據(jù)。這時(shí)你再進(jìn)行第二個(gè)查詢(如用戶信息的統(tǒng)計(jì)或其它有關(guān)用戶信息的查詢)。這時(shí)候?qū)⒊霈F(xiàn)數(shù)據(jù)查詢結(jié)果的不一致,第二次查詢的結(jié)果會(huì)由于數(shù)據(jù)被修改了而與第一次查詢結(jié)果一不樣。只讀事務(wù)正是解決這類問題的辦法。

其實(shí)Oracle為了優(yōu)化查詢在對于單條查詢時(shí)也會(huì)啟動(dòng)只讀事務(wù)(就是在你開始執(zhí)行查詢時(shí)會(huì)有一個(gè)只讀事務(wù)點(diǎn),到查詢結(jié)束前,在這期間的數(shù)據(jù)修改都被無視掉),你無須手動(dòng)創(chuàng)建只讀事務(wù)。但多條查詢時(shí)我們就必須手動(dòng)創(chuàng)建只讀事務(wù)。


本文出自:億恩科技【www.allwellnessguide.com】

服務(wù)器租用/服務(wù)器托管中國五強(qiáng)!虛擬主機(jī)域名注冊頂級提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM]

  • 您可能在找
  • 億恩北京公司:
  • 經(jīng)營性ICP/ISP證:京B2-20150015
  • 億恩鄭州公司:
  • 經(jīng)營性ICP/ISP/IDC證:豫B1.B2-20060070
  • 億恩南昌公司:
  • 經(jīng)營性ICP/ISP證:贛B2-20080012
  • 服務(wù)器/云主機(jī) 24小時(shí)售后服務(wù)電話:0371-60135900
  • 虛擬主機(jī)/智能建站 24小時(shí)售后服務(wù)電話:0371-60135900
  • 專注服務(wù)器托管17年
    掃掃關(guān)注-微信公眾號
    0371-60135900
    Copyright© 1999-2019 ENKJ All Rights Reserved 億恩科技 版權(quán)所有  地址:鄭州市高新區(qū)翠竹街1號總部企業(yè)基地億恩大廈  法律顧問:河南亞太人律師事務(wù)所郝建鋒、杜慧月律師   京公網(wǎng)安備41019702002023號
      0
     
     
     
     

    0371-60135900
    7*24小時(shí)客服服務(wù)熱線