數(shù)據(jù)庫系統(tǒng)概論10_第1頁
數(shù)據(jù)庫系統(tǒng)概論10_第2頁
數(shù)據(jù)庫系統(tǒng)概論10_第3頁
數(shù)據(jù)庫系統(tǒng)概論10_第4頁
數(shù)據(jù)庫系統(tǒng)概論10_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、 數(shù)據(jù)庫系統(tǒng)概論數(shù)據(jù)庫系統(tǒng)概論視圖、事務(wù)視圖、事務(wù)主講:劉志鵬主講:劉志鵬2Hello View! select * from my_contacts natural join job_current; create view mc as (select * from my_contacts natural join job_current); select * from mc;3視圖視圖(View) 數(shù)據(jù)庫中的視圖是一個虛擬表,其內(nèi)容由查詢定義。同真實的表一樣,視圖包含一系列帶有名稱的列和行數(shù)據(jù)。但是,視圖并不在數(shù)據(jù)庫中以存儲的數(shù)據(jù)值集形式存在。行和列數(shù)據(jù)來自由定義視圖的查詢所引用的表,并且

2、在引用視圖時動態(tài)生成。4 1.從用戶角度來看,一個視圖是從一個特定的角度來查看數(shù)據(jù)庫中的數(shù)據(jù)。 2.從數(shù)據(jù)庫系統(tǒng)內(nèi)部來看,一個視圖是由SELECT語句組成的查詢定義的虛擬表,是由一張或多張表中的數(shù)據(jù)組成的。 3.從數(shù)據(jù)庫系統(tǒng)外部來看,視圖就如同一張表一樣,對表能夠進行的一般操作都可以應(yīng)用于視圖,例如查詢,插入,修改,刪除操作等。5視圖的作用視圖的作用 1.簡單性簡單性 看到的就是需要的。視圖不僅可以簡化用戶對數(shù)據(jù)的理解,也可以簡化他們的操作。那些被經(jīng)常使用的查詢可以被定義為視圖,從而使得用戶不必為以后的操作每次指定全部的條件。6 2.安全性安全性 通過視圖用戶只能查詢和修改他們所能見到的數(shù)據(jù)。

3、數(shù)據(jù)庫中的其它數(shù)據(jù)則既看不見也取不到。數(shù)據(jù)庫授權(quán)命令可以使每個用戶對數(shù)據(jù)庫的檢索限制到特定的數(shù)據(jù)庫對象上,但不能授權(quán)到數(shù)據(jù)庫特定行和特定的列上。通過視圖,用戶可以被限制在數(shù)據(jù)的不同子集上。 3.邏輯數(shù)據(jù)獨立性邏輯數(shù)據(jù)獨立性 視圖可幫助用戶屏蔽真實表結(jié)構(gòu)變化帶來的影響。7事務(wù)事務(wù) 數(shù)據(jù)庫事務(wù)(Database Transaction) ,是指作為單個邏輯工作單元執(zhí)行的一系列操作。 事務(wù)處理可以確保除非事務(wù)性單元內(nèi)的所有操作都成功完成,否則不會永久更新面向數(shù)據(jù)的資源。通過將一組相關(guān)操作組合為一個要么全部成功要么全部失敗的單元,可以簡化錯誤恢復(fù)并使應(yīng)用程序更加可靠。一個邏輯工作單元要成為事務(wù),必須滿

4、足所謂的ACID(原子性、一致性、隔離性和持久性)特性。8時間時間賬戶賬戶A賬戶賬戶B從賬戶從賬戶A轉(zhuǎn)賬轉(zhuǎn)賬100元到賬戶元到賬戶B11000查詢賬戶查詢賬戶A余額余額 1000元元Select sum from A2900從賬戶從賬戶A中減去中減去100元元Update A set sum=9003100查詢賬戶查詢賬戶B余額余額100元元Select sum from B4200匯入?yún)R入B賬戶賬戶100元元Update B set sum=2005900200轉(zhuǎn)賬完成!轉(zhuǎn)賬完成!9時間時間賬戶賬戶A賬戶賬戶B從賬戶從賬戶A轉(zhuǎn)賬轉(zhuǎn)賬100元到賬戶元到賬戶B11000查詢賬戶查詢賬戶A余額余額

5、 1000元元Select sum from A2900從賬戶從賬戶A中減去中減去100元元Update A set sum=9003100查詢賬戶查詢賬戶B余額余額100元元Select sum from B4意外發(fā)生意外發(fā)生(如停電、網(wǎng)絡(luò)中斷等如停電、網(wǎng)絡(luò)中斷等),后面的更新賬戶,后面的更新賬戶B的的操作無法完成操作無法完成5系統(tǒng)恢復(fù)后系統(tǒng)恢復(fù)后6100查詢賬戶查詢賬戶B余額余額100元元Select sum from B7900查詢賬戶查詢賬戶A余額余額 900元元Select sum from A8賬戶賬戶A的的100元人間蒸發(fā)元人間蒸發(fā)10Hello Transaction! Set

6、 autocommit = 0; Start trasaction; Insert into . Insert into . Rollback;(Commit;)11原子性原子性 (Atomicity ) 原子性屬性用于標識事務(wù)是否完全地完成,一個事務(wù)的任何更新要在系統(tǒng)上完全完成,如果由于某種原因出錯,事務(wù)不能完成它的全部任務(wù),系統(tǒng)將返回到事務(wù)開始前的狀態(tài)。12一致性一致性( Consistency ) 事務(wù)在系統(tǒng)完整性中實施一致性,這通過保證系統(tǒng)的任何事務(wù)最后都處于有效狀態(tài)來實現(xiàn)。如果事務(wù)成功地完成,那么系統(tǒng)中所有變化將正確地應(yīng)用,系統(tǒng)處于有效狀態(tài)。如果在事務(wù)中出現(xiàn)錯誤,那么系統(tǒng)中的所有變化

7、將自動地回滾,系統(tǒng)返回到原始狀態(tài)。因為事務(wù)開 始時系統(tǒng)處于一致狀態(tài),所以現(xiàn)在系統(tǒng)仍然處于一致狀態(tài)。13隔離性隔離性 ( Isolation) 在隔離狀態(tài)執(zhí)行事務(wù),使它們好像是系統(tǒng)在給定時間內(nèi)執(zhí)行的唯一操作。如果有兩個事務(wù),運行在相同的時間內(nèi),執(zhí)行相同的功能,事務(wù)的隔離性將確保每一事務(wù)在 系統(tǒng)中認為只有該事務(wù)在使用系統(tǒng)。 這種屬性有時稱為串行化,為了防止事務(wù)操作間的混淆,必須串行化或序列化請求,使得在同一時間僅有一個請求用于同一數(shù)據(jù)。14持久性持久性 (Durabilily) 持久性意味著一旦事務(wù)執(zhí)行成功,在系統(tǒng)中產(chǎn)生的所有變化將是永久的。應(yīng)該存在一些檢查點防止在系統(tǒng)失敗時丟失信息。甚至硬件本身

8、失敗,系統(tǒng)的狀態(tài)仍能通過在日志中記錄事務(wù)完成的任務(wù)進行重建。持久性的概念允許開發(fā)者認為不管系統(tǒng)以后發(fā)生了什么變化,完 成的事務(wù)是系統(tǒng)永久的部分。 15事務(wù)在并發(fā)時都會遇到那些問題呢?事務(wù)在并發(fā)時都會遇到那些問題呢? 我們先來看看數(shù)據(jù)庫并發(fā)操作時會有那些異常情形 161、第一類丟失更新(Lost update) 兩個事務(wù)都同時更新一行數(shù)據(jù),但是第二個事務(wù)卻中途失敗退出,導(dǎo)致對數(shù)據(jù)的兩個修改都失效了。 17時間時間取款事務(wù)取款事務(wù)A存款事務(wù)存款事務(wù)B1開始事務(wù)開始事務(wù)2開始事務(wù)開始事務(wù)3查詢賬戶余額為查詢賬戶余額為1000元元4查詢賬戶余額為查詢賬戶余額為1000元元5匯入?yún)R入100元把余額改為元

9、把余額改為1100元元6提交事務(wù)(提交事務(wù)(commit)7取出取出100把余額改為把余額改為900元元8撤銷事務(wù)撤銷事務(wù)(roll back)9余額恢復(fù)為余額恢復(fù)為1000元(元(丟失更新丟失更新)182、臟讀(Dirty Read) 一個事務(wù)開始讀取了某行數(shù)據(jù),但是另外一個事務(wù)已經(jīng)更新了此數(shù)據(jù)但沒有能夠及時提交。這是相當(dāng)危險的,因為很可能所有的操作都被回滾。 19時間時間取款事務(wù)取款事務(wù)A存款事務(wù)存款事務(wù)B1開始事務(wù)開始事務(wù)2開始事務(wù)開始事務(wù)3查詢賬戶余額為查詢賬戶余額為1000元元4存入存入100元把余額改為元把余額改為1100元元5查詢賬戶余額為查詢賬戶余額為1100元元(讀取臟數(shù)據(jù)讀

10、取臟數(shù)據(jù))6撤銷事務(wù)撤銷事務(wù)(roll back)7取出取出11008提交事務(wù)失敗提交事務(wù)失敗203、不可重復(fù)讀(Non-repeatable Read) 一個事務(wù)對同一行數(shù)據(jù)重復(fù)讀取兩次,但是卻得到了不同的結(jié)果。同一查詢在同一事務(wù)中多次進行,由于其他提交事務(wù)所做的修改或刪除,每次返回不同的結(jié)果集,此時發(fā)生非重復(fù)讀。21時間時間取款事務(wù)取款事務(wù)A存款事務(wù)存款事務(wù)B1開始事務(wù)開始事務(wù)2開始事務(wù)開始事務(wù)3查詢賬戶余額為查詢賬戶余額為1000元元4查詢賬戶余額為查詢賬戶余額為1000元元5存入存入100元把余額改為元把余額改為1100元元6提交事務(wù)提交事務(wù)8查詢賬戶余額為查詢賬戶余額為1100元元9

11、提交事務(wù)提交事務(wù)224、二類丟失更新(Second lost update) 無法重復(fù)讀取的特例。有兩個并發(fā)事務(wù)同時讀取同一行數(shù)據(jù),然后其中一個對它進行修改提交,而另一個也進行了修改提交。這就會造成第一次寫操作失效。23時間時間取款事務(wù)取款事務(wù)A存款事務(wù)存款事務(wù)B1開始事務(wù)開始事務(wù)2開始事務(wù)開始事務(wù)3查詢賬戶余額為查詢賬戶余額為1000元元4查詢賬戶余額為查詢賬戶余額為1000元元5取出取出100元把余額改為元把余額改為900元元6提交事務(wù)提交事務(wù)8存入存入100元把余額改為元把余額改為1100元元(丟失更新)(丟失更新)9提交事務(wù)提交事務(wù)245、幻讀(Phantom Read) 事務(wù)在操作過

12、程中進行兩次查詢,第二次查詢的結(jié)果包含了第一次查 詢中未出現(xiàn)的數(shù)據(jù)(這里并不要求兩次查詢的SQL語句相同)。這是因為在兩次查詢過程中有另外一個事務(wù)插入數(shù)據(jù)造成的。 和不可重復(fù)讀的區(qū)別: 1.幻讀考慮的是插入和刪除的操作。 2.不可重復(fù)讀考慮的是更新操作。25時間時間查詢學(xué)生事務(wù)查詢學(xué)生事務(wù)A插入學(xué)生事務(wù)插入學(xué)生事務(wù)B1開始事務(wù)開始事務(wù)2開始事務(wù)開始事務(wù)3查詢學(xué)生人數(shù)查詢學(xué)生人數(shù)10人人4插入一個新學(xué)生插入一個新學(xué)生5查詢學(xué)生人數(shù)查詢學(xué)生人數(shù)11人人6提交事務(wù)提交事務(wù)9提交事務(wù)提交事務(wù)26三、數(shù)據(jù)庫管理系統(tǒng)(RDBMS)對事務(wù)并發(fā)時的隔離機制 為了兼顧并發(fā)效率和異??刂疲跇藴蔛QL規(guī)范中,定義

13、了4個事務(wù)隔離級別 1、未提交讀(Read Uncommitted) 2、提交讀(Read Committed) 3、可重復(fù)讀(Repeatable Read) 4、串行讀(Serializable) 27未提交讀未提交讀(Read Uncommitted) 直譯就是讀未提交,意思就是即使一個更新語句沒有提交,但是別的事務(wù)可以讀到這個改變.這是很不安全的。允許任務(wù)讀取數(shù)據(jù)庫中未提交的數(shù)據(jù)更改,也稱為臟讀。 28提交讀(Read Committed) 直譯就是讀提交,可防止臟讀,意思就是語句提交以后即執(zhí)行了COMMIT以后 別的事務(wù)就能讀到這個改變. 只能讀取到已經(jīng)提交的數(shù)據(jù)。Oracle等多數(shù)數(shù)據(jù)庫默認都是該級別 29可重復(fù)讀(Repeatable Read) 直譯就是可以重復(fù)讀,這是說在同一個事務(wù)里面先后執(zhí)行同一個查詢語句的時候,得到的結(jié)果是一樣的.在同一個事務(wù)內(nèi)的查詢都是事務(wù)開始時刻一致的,InnoDB默認級別。在SQL標準中,該隔離級別消除了不可重復(fù)讀,但是還存在幻象讀 30串行讀(Serializable) 直譯就是序列化,意思是

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論