事務(wù)的四個特點(diǎn)_第1頁
事務(wù)的四個特點(diǎn)_第2頁
事務(wù)的四個特點(diǎn)_第3頁
事務(wù)的四個特點(diǎn)_第4頁
事務(wù)的四個特點(diǎn)_第5頁
全文預(yù)覽已結(jié)束

下載本文檔

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

文檔簡介

事務(wù)的四個特點(diǎn):(ACID)1、 原子性(Atomic):事務(wù)中所有數(shù)據(jù)的修改,要么全部執(zhí)行,要么全部不執(zhí)行。2、 一致性(Consistence):事務(wù)完成時,要使所有所有的數(shù)據(jù)都保持一致的狀態(tài),換言之:通過事務(wù)進(jìn)行的所有數(shù)據(jù)修改,必須在所有相關(guān)的表中得到反映。3、 隔離性(Isolation):事務(wù)應(yīng)該在另一個事務(wù)對數(shù)據(jù)的修改前或者修改后進(jìn)行訪問。4、 持久性(Durability):保證事務(wù)對數(shù)據(jù)庫的修改是持久有效的,即使發(fā)生系統(tǒng)故障,也不應(yīng)該丟失。事務(wù)組成:一條或者多條DML,[一條DDL]和一條DCL。數(shù)據(jù)異常臟讀(DirtyRead):事務(wù)T1更新了一行數(shù)據(jù),還沒有提交所做的修改,T2讀取更新后的數(shù)據(jù),T1回滾,T2讀取的數(shù)據(jù)無效,這種數(shù)據(jù)稱為臟讀數(shù)據(jù)。不可重復(fù)讀(UNrepeatableRead):事務(wù)T1讀取一行數(shù)據(jù),T2修改了T1剛剛讀取的記錄,T1再次查詢,發(fā)現(xiàn)與第一次讀取的記錄不相同,稱為不可重復(fù)讀。幻讀(PhantomRead):事務(wù)T1讀取一條帶WHERE條件的語句,返回結(jié)果集,T2插入一條新紀(jì)錄,恰好也是T1的WHERE條件,T1再次查詢,結(jié)果集中又看到T2的記錄,新紀(jì)錄就叫做幻讀。事務(wù)隔離級別針對讀取數(shù)據(jù)時可能產(chǎn)生的不一致現(xiàn)象,在SQL92標(biāo)準(zhǔn)中定義了4個事務(wù)的隔離級別:隔離級別臟讀不可重復(fù)讀幻讀Readuncommitted(讀未提交)是是是Readcommitted(讀己提交)否是是Repeatableread(可重復(fù)讀)否否是Serializable(串行讀)否否否Oracle默認(rèn)的隔離級別是readcommittedoOracle支持上述四種隔離級別中的兩種:readcommitted和serializable。除此之外,Oralce中還定義Readonly和Readwrite隔離級別。Readonly:事務(wù)中不能有任何修改數(shù)據(jù)庫中數(shù)據(jù)的操作語句,是Serializable的一個子集。Readwrite:它是默認(rèn)設(shè)置,該選項(xiàng)表示在事務(wù)中可以有訪問語句、修改語句,但不經(jīng)常使用。設(shè)置一個事務(wù)的隔離級別:?SETTRANSACTIONISOLATIONLEVELREADCOMMITTED;SETTRANSACTIONISOLATIONLEVELSERIALIZABLE;SETTRANSACTIONREADONLY;SETTRANSACTIONREADWRITE;注意:這些語句是互斥的,不能同時設(shè)置兩個或兩個以上的選項(xiàng)。設(shè)置單個會話的隔離級別:ALTERSESSIONSETTRANSACTIONISOLATIONLEVELREADCOMMITTED;ALTERSESSIONSETTRANSACTIONISOLATIONSERIALIZABLE;鎖分類根據(jù)保護(hù)對象的不同,Oracle數(shù)據(jù)庫鎖可分為:DMLlock(datalocks,數(shù)據(jù)鎖):用于保護(hù)數(shù)據(jù)的完整性。DDLlock(dictionarylocks,字典鎖):用于保護(hù)數(shù)據(jù)庫對象的結(jié)構(gòu)(例如表、視圖、索引的結(jié)構(gòu)定義)。Internallocks和latches(內(nèi)部鎖與閂):保護(hù)內(nèi)部數(shù)據(jù)庫結(jié)構(gòu)。Distributedlocks(分布式鎖):用于OPS(并行服務(wù)器)中。PCMlocks(并行高速緩存管理鎖):用于OPS(并行服務(wù)器)中。在0racle中最主要的鎖是DML鎖,DML鎖的目的在于保證并發(fā)情況下的數(shù)據(jù)完整性。在Oracle數(shù)據(jù)庫中,DML鎖主要包括TM鎖和TX鎖,其中TM鎖稱為表級鎖,TX鎖稱為事務(wù)鎖或行級鎖。鎖出現(xiàn)在數(shù)據(jù)共享的場合,用來保證數(shù)據(jù)的一致性。當(dāng)多個會話同時修改一個表時,需要對數(shù)據(jù)進(jìn)行相應(yīng)的鎖定。鎖有''共享鎖"、''排它鎖”,''共享排它鎖"等多種類型,而且每種類型又有''行級鎖"(一次鎖住一條記錄),''頁級鎖"(一次鎖住一頁,即數(shù)據(jù)庫中存儲記錄的最小可分配單元),''表級鎖"(鎖住整個表)。6.2共享鎖(S鎖)可通過locktableinsharemode命令添加該S鎖。在該鎖定模式下,不允許任何用戶更新表。但是允許其他用戶發(fā)出select...fromforupdate命令對表添加RS鎖。6.3排他鎖(X鎖)可通過locktableinexclusivemode命令添加X鎖。在該鎖定模式下,其他用戶不能對表進(jìn)行任何的DML和DDL操作,該表上只能進(jìn)行查詢。6.4行級共享鎖(RS鎖)通常是通過select...fromforupdate語句添加的,同時該方法也是我們用來手工鎖定某些記錄的主要方法。比如,當(dāng)我們在查詢某些記錄的過程中,不希望其他用戶對查詢的記錄進(jìn)行更新操作,則可以發(fā)出這樣的語句。當(dāng)數(shù)據(jù)使用完牢以后,直接發(fā)出「ollback命令將鎖定解除。當(dāng)表上添加了RS鎖定以后,不允許其他事務(wù)對相同的表添加排他鎖,但是允許其他的事務(wù)通過DML語句或lock命令鎖定相同表里的其他數(shù)據(jù)行。6.5行級排他鎖(RX鎖)當(dāng)進(jìn)行DML操作時會自動在被更新的表上添加RX鎖,或者也可以通過執(zhí)行l(wèi)ock命令顯式的在表上添加RX鎖。在該鎖定模式下,允許其他的事務(wù)通過DML語句修改相同表里的其他數(shù)據(jù)行,或通過lock命令對相同表添加RX鎖定,但是不允許其他事務(wù)對相同的表添加排他鎖(X鎖)。6.6共享行級排他鎖(SRX鎖)通過locktableinsharerowexclusivemode命令添加SRX鎖。該鎖定模式比行級排他鎖和共享鎖的級別都要高,這時不能對相同的表進(jìn)行DML操作,也不能添加共享鎖。上述幾種鎖模式中,RS鎖是限制最少的鎖,X鎖是限制最多的鎖。它們的兼容關(guān)系如下:—SXRSRXSRXN/AS7X7XXXXXXXXRSVXy7/RXXXy7XSRXXX/XXN/AVVV74基本上所有的鎖都可以由Oracle內(nèi)部自動創(chuàng)建和釋放,但是其中的DDL和DML鎖是可以通過命令進(jìn)行管理的,命令語法:LOCKtable_nameIN[rowshare][rowexclusive][share][sharerowexclusive][exclusive]MODE[NOWAIT];鎖的力度行級鎖TX表級鎖TM數(shù)據(jù)庫級鎖死鎖產(chǎn)生條件:互斥,請求并保持不可剝奪循環(huán)等待等條件解決死鎖沖突:執(zhí)行commit或者rollback終止會話,在另一個線程中避免死鎖:避免使用長事物、經(jīng)常提交、避免使用lock避免在高峰期使用ddlBeginSqIooooIfsql%rowcount=0thenRollback;Return;Endif;Commit;ExceptionWhenothersthenRollback;End;SavepointA;SavepointB;RollbacktoA;RollbacktoB;類型:Char(20)Nchar(20)UnicodeVchar(20)Nvchar(20)Number(nzm)lnteger=number(38,0)CreatetableA(idnumber(8)constraintpkjdprimarykey,Namevchar(20),Deptidnumber(20)constraintfk_deptreferencesDept(deptid))CreatetalbeB(idintprimarykey,Namenvarchar2(20),Deptidint.Constraintpk_nameprimaryKey(id) Constraintfk_nameforeignkey(deptid)referencesDept(deptid))AltertableAaddcolumnname2varchar(30);AltertableAaltercolumnname2varchar(50);AltertableAdropcolumnname2;DroptableA;TruncatetableA;刪除數(shù)據(jù)保留結(jié)構(gòu)不可恢復(fù)AltertableBaddprimarykey(id);AltertableBadd[constraintfk_name]foreignkey(deptid)referencesDept(deptid);添加約束AltertableAaddconstraint約束名check(deptid>=5);(between1and100)AltertableAdropcontrain約束名;AltertableAaddconstraint唯一約束名unique(字段名);AltertableAaddconstraint約束名default('地址不明')foraddress;索引Createindex索引名on表名

溫馨提示

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

評論

0/150

提交評論