資料庫之事務

2022-06-18 19:06:07 字數 2230 閱讀 3660

四大屬性:原子性、一致性、隔離性、永續性(acid)

原子性:事務必須是原子工作單元;對於其資料修改,要麼全部執行,要麼全都不執行。

隔離性:由併發事務所做的修改必須與任何其他事務所做的修改隔離。

事務識別資料時資料所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是第二個事務修改它之後的狀態,事務不會識別中間狀態的資料。

這為可序列性,因為它能夠重新裝載起始資料,並且重播一系列事務,以使資料結束時的狀態與原始事務執行的狀態相同。

永續性:完成完全持久的事務之後,它的影響將永久存在於系統中。該修改即使出現系統故障也將一直保持。sql server2014和更高的版本將啟用延遲的永續性事務。

提交延遲的持久事務後,該事務日誌記錄將保留在磁碟上。

sql程式猿要負責啟動和結束事務,同時強制保持資料的邏輯一致性。程式猿必須定義資料修改的順序,使資料相對於其組織的業務規則保持一致。

程式猿將這些修改語句包括到乙個事務中,使sql server資料庫引擎能夠強制該事務的物理完整性。

啟動事務

使用api函式和transact-sql語句,可以在sql server資料庫引擎例項中將事務作為顯示、自動提交或隱式事務來啟動

顯示事務

通過api函式或發出transact-sql begin transaction、commit transaction、commit work、rollback transaction或者rollback work transact-sql語句明確定義事務的開始和結束。

當事務結束時,連線將返回到啟動顯示事務前所處的事務模式,或者隱式模式,或者自動提交模式。

自動提交事務

sql server資料庫引擎的預設事務管理模式。每個transact-sql語句在完成時,都被提交或者回滾。如果乙個語句成功完成,則提交該語句;如果遇到錯誤,則回滾該語句。

只要沒有顯示事務或者隱式事務覆蓋自動提交模式,與sql server資料庫引擎例項的連線就以此預設模式操作。

隱式事務

當連線以隱式事務模式進行操作時,sql server資料庫引擎例項將在提交或回滾當前事務後自動啟動新事務。無需描述事務的開始,只需提交或回滾沒個事務。隱性事務模式生成連續的事務鏈。

通過api函式或transact-sql set implicit_transaction on 語句,將隱性事務模式設定為開啟。此模式也成為autocommit off.

批處理級事務

只能應用於多個活動結果集(mars),在mars會話中啟動的transact-sql顯示或者隱式事務變為批處理級事務。當批處理完成時沒有提交或回滾的批處理級事務自動由sql server進行回滾

分布式事務

分布式事務跨越兩個或多個稱為資源管理器的伺服器。稱為事務管理器的伺服器元件必須在資源管理器之間協調事務管理。

跨越兩個或多個資料庫的單個sql server資料庫引擎例項中的事務實際上是分布式事務。該例項對分布式事務進行內部管理;對使用者而言,其操作就像本地事務一樣。

對於應用程式而言,管理分布式事務就像管理本地事務。當事務結束時,應用程式會請求提交或回滾事務。

不同的是,分布式提交必須由事務管理器管理,以盡量避免出現因為網路故障而導致事務由某些資源管理器成功提交,但由另一些資源管理器回滾的情況。

通常分為兩個階段(準備階段和提交階段)管理提交程序可避免這種情況,這稱為兩階段提交(2pc)

準備階段

當事務管理器收到提交請求時,它會向該事務涉及的所有資源管理器傳送準備命令。然後,每個資源管理器將盡力使該事務持久,並且所有儲存該事務日誌映像的緩衝區將被重新整理到磁碟中。

當每個資源管理器完成準備階段時,它會向事務管理器返回準備成功或準備失敗的訊息。

提交階段

如果事務管理器從所有資源管理器收到準備成功的訊息,它將向每個資源管理器傳送乙個提交命令。然後,資源管理器就可以完成提交。

如果所有資源管理器都報告提交成功,那麼事務管理器就會向應用程式傳送乙個成功通知。

如果任一資源管理器報告準備失敗,那麼事務管理器將向每個資源管理器傳送乙個回滾命令,並向應用程式表明提交失敗。

結束事務

使用commit或者rollback語句,或者通過相應的api函式結束事務。

commit

如果事務成功,則提交。commit語句保證事務的所有修改在資料庫中都永久有效。commit語句還釋放事務使用的資源,例如:鎖

rollback

如果事務出現錯誤,或使用者決定取消事務,則回滾事務。rollback語句通過將資料返回它在事務開始時所處的狀態,來取消事務中所有的修改。rollback也釋放事務所占用的資源。

資料庫之事務

事務是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,是個不可分割的工作單位。如果某一事務成功,則在該事務中進行的所有資料更改均會提交,成為資料庫中永久的組成部分。如果事務遇到錯誤,則必須取消或回滾,所有資料均被更改清除。1 原子性 atomicity 事務是資料庫的邏輯工...

資料庫之事務

概述 事務一般是指要做的或所做的事情。在計算機術語中是指訪問並可能更新資料庫中各種資料項的乙個程式執行單元 unit 特徵 事務具有4個基本特徵,分別是 原子性 atomicity 一致性 consistency 隔離性 isolation 永續性 duration 簡稱acid。原子性事務的原子性...

資料庫 之 事務

本文將以mysql為主分析 在mysql中只有使用了innodb資料庫引擎的資料庫或表才支援事務 事務處理可以用來維護資料庫的完整性,保證成批的sql語句要麼全部執行,要麼全部不執行 事務用來管理insert update delete語句。事務必須滿足4個條件acid a atomicity 原子...