(巨集觀角度:應用程式設計師)乙個訪問或改變資料庫內容的程式的一次執行,或者說一條或多條sql語句一次執行被看作乙個事務。事務是資料庫管理系統提供的控制資料操作的一種手段,通過這一手段,應用程式設計師將一系列的資料庫操作組合在一起作為乙個整體進行操作和控制,以便資料庫管理系統能夠提供一致性狀態轉換的保證。
(微觀角度:dbms)對資料庫的一系列基本操作(讀,寫)的乙個整體性執行。
多個事務從巨集觀上看是並行執行的,但其微觀上的基本操作(讀,寫)則可以是交叉執行的。
原子性atomicity: dbms能夠保證事務的一組更新操作是原子不可分的,即對資料庫而言,要麼全做,要麼不做。
一致性consistency: dbms保證事務的操作狀態是正確的,符合一致性的操作規則,不能出現三種典型的不一致性,它是進一步由隔離性來保證的。
隔離性isolation: dbms保證併發執行的多個事務之間互相不受影響。例如,兩個事務t1和t2,即使是併發執行,也相當於先執行t1再執行t2 或者反之。
永續性durability: dbms保證已提交事務的影響是持久的,被撤銷事務的影響是可恢復的。
具有acid特性的若干資料庫基本操作的組合體被稱為事務。
一組事務的基本步(讀 ,寫,其他控制操作如加鎖,解鎖等)的一種執行順序稱為對這組事務的乙個排程。
多個事務從巨集觀上看是並行執行的,但其微觀上的基本操作(讀,寫)則是交叉執行的。
當且僅當在這個併發排程下所得到的新資料庫結果與分別序列地執行這些事務所得到的新資料庫完全一致,則說明排程是正確的。
如果不管資料庫初始狀態如何,乙個排程對資料庫狀態的影響都和某個序列排程相同,則我們說這個排程是可序列化的或是具有可序列性的。
注意:排程中一對連續的動作,如果它們的順序交換,那麼涉及的事務中至少有乙個事務的行為會改變。
有衝突的兩個操作是不能交換次序的,沒有衝突的兩個事務是可交換的。
乙個排程,如果通過交換相鄰兩個無衝突的操作能夠轉換到某乙個序列的排程,則稱此排程為衝突可序列化的排程。
注意:鎖是控制併發的一種手段,是資料庫元素上的併發控制標誌
只有乙個事務能讀和寫,其他任何事務都不能讀、寫
所有事務都可以讀,但任何事務都不能寫
初始讀,以後可以公升級為寫
區分增量更新和其他型別的更新
對應封鎖協議0級到3級協議
注意: 所有的併發控制都不允許有丟失修改。
是一種基於鎖的併發控制方法。讀寫資料之前,每個事務中所有封鎖請求先於任何乙個解鎖請求。兩階段:加鎖段和解鎖段。加鎖段不能有解鎖操作,解鎖段不能有加鎖操作。
兩段封鎖協議是可以保證衝突可序列性的。
注意:兩段封鎖協議是可能產生死鎖的協議
資料庫事務總結
資料庫併發訪問會出現以下4種問題 1 第一類丟失更新 事務b巢狀在事務a中,事務b已經更新,之後事務a更新失敗,a回滾,丟失了b的更新。支援事務的資料庫不會出現此問題 2 髒讀 讀到其他事務還未提交的資料。3 不可重複讀 在同一事務中,兩次讀取的資料不一致。被其他事務修改了 4 幻讀 兩次讀取的記錄...
資料庫 索引 事務總結
一 索引 1 什麼是索引 索引是一種特殊的資料庫結構,它包含著對資料表裡所有記錄的引用指標,根據這個指標我們就可以找到這個指標所對應的記錄。可以對錶中的一列或多列建立索引,並指定索引的型別,各類索引有各自的資料結構實現。從某種程度上說,索引就相當於一本書的目錄,根據這個目錄中所寫的頁碼我們就能更快的...
資料庫事務的總結
用一句話簡單的說明 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作 對資料庫的相關增刪改查的操作 要麼完全地執行,要麼完全地不執行。資料庫的四大特性acid,原子性 一致性 隔離性 永續性。每個特性都有其特定的職責。2.1 原子性 乙個事務中的所有操作...