在關聯式資料庫中,乙個事務可以是一條sql語句,一組sql語句或整個程式。
原子性(atomicity)。乙個事務是乙個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。
一致性(consistency)。事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。
隔離性(isolation)。乙個事務的執行不能被其他事務干擾。即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。
永續性(durability)。永續性也稱永久性(permanence),指乙個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。
髒讀(dirty read)
當乙個事務讀取另乙個事務尚未提交的修改時,產生髒讀。同一事務內不是髒讀。 乙個事務開始讀取了某行資料,但是另外乙個事務已經更新了此資料但沒有能夠及時提交。這是相當危險的,因為很可能所有的操作都被回滾,也就是說讀取出的資料其實是錯誤的。
非重複讀(nonrepeatable read) 乙個事務對同一行資料重複讀取兩次,但是卻得到了不同的結果。同一查詢在同一事務中多次進行,由於其他提交事務所做的修改或刪除,每次返回不同的結果集,此時發生非重複讀。
幻像讀(phantom reads) 事務在操作過程中進行兩次查詢,第二次查詢的結果包含了第一次查詢中未出現的資料(這裡並不要求兩次查詢的sql語句相同)。這是因為在兩次查詢過程中有另外乙個事務插入資料造成的。當對某行執行插入或刪除操作,而該行屬於某個事務正在讀取的行的範圍時,會發生幻像讀問題。
丟失修改(lost update)
第一類:當兩個事務更新相同的資料來源,如果第乙個事務被提交,第二個卻被撤銷,那麼連同第乙個事務做的更新也被撤銷。
第二類:有兩個併發事務同時讀取同一行資料,然後其中乙個對它進行修改提交,而另乙個也進行了修改提交。這就會造成第一次寫操作失效
共享鎖(s鎖)
用於唯讀操作(select),鎖定共享的資源。共享鎖不會阻止其他使用者讀,但是阻止其他的使用者寫和修改。
更新鎖(u鎖)
用於可更新的資源中。防止當多個會話在讀取、鎖定以及隨後可能進行的資源更新時發生常見形式的死鎖。
獨佔鎖(x鎖,也叫排他鎖)
一次只能有乙個獨佔鎖用在乙個資源上,並且阻止其他所有的鎖包括共享縮。寫是獨佔鎖,可以有效的防止「髒讀」。
資料庫之事務
事務是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是個不可分割的工作單位。如果某一事務成功,則在該事務中進行的所有資料更改均會提交,成為資料庫中永久的組成部分。如果事務遇到錯誤,則必須取消或回滾,所有資料均被更改清除。1 原子性 atomicity 事務是資料庫的邏輯工...
資料庫之事務
概述 事務一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 特徵 事務具有4個基本特徵,分別是 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 duration 簡稱acid。原子性事務的原子性...
資料庫 之 事務
本文將以mysql為主分析 在mysql中只有使用了innodb資料庫引擎的資料庫或表才支援事務 事務處理可以用來維護資料庫的完整性,保證成批的sql語句要麼全部執行,要麼全部不執行 事務用來管理insert update delete語句。事務必須滿足4個條件acid a atomicity 原子...