舉例說明什麼是事務

1.什麼是事務:

事務是程序中一系列嚴密的操作,所有操作執行必須成功完成,否則在每個操作所做的更改將會被撤銷,這也是事務的原子性(要麼成功,要麼失敗)。

2.事務特性:

事務特性分爲四個:原子性(Atomicity)、一致性(Consistency)、隔離性(Isolation)、持續性(Durability)簡稱ACID。

事務的特點如下:

原子性:事務必須是原子工作單元;對於其數據修改,要麼全都執行,要麼全都不執行。通常,與某個事務關聯的操作具有共同的目標,並且是相互依賴的。如果系統只執行這些操作的一個子集,則可能會破壞事務的總體目標。原子性消除了系統處理操作子集的可能性。

一致性:事務在完成時,必須使所有的數據都保持一致狀態。在相關數據庫中,所有規則都必須應用於事務的修改,以保持所有數據的完整性。事務結束時,所有的內部數據結構(如 B 樹索引或雙向鏈表)都必須是正確的。某些維護一致性的責任由應用程序開發人員承擔,他們必須確保應用程序已強制所有已知的完整性約束。例如,當開發用於轉帳的應用程序時,應避免在轉帳過程中任意移動小數點。

隔離性:由併發事務所作的修改必須與任何其它併發事務所作的修改隔離。事務查看數據時數據所處的狀態,要麼是另一併發事務修改它之前的狀態,要麼是另一事務修改它之後的狀態,事務不會查看中間狀態的數據。這稱爲隔離性,因爲它能夠重新裝載起始數據,並且重播一系列事務,以使數據結束時的狀態與原始事務執行的狀態相同。當事務可序列化時將獲得最高的隔離級別。在此級別上,從一組可並行執行的事務獲得的結果與通過連續運行每個事務所獲得的結果相同。由於高度隔離會限制可並行執行的事務數,所以一些應用程序降低隔離級別以換取更大的吞吐量。

持久性:事務完成之後,它對於系統的影響是永久性的。該修改即使出現致命的系統故障也將一直保持。

事務可以保證數據庫的完整性,避免因各種原因而導致數據庫的內容不一致,產生錯誤的數據,事務可以保證數據安全,事務控制實際上就是控制數據的訪問安全。

3.舉個例子:

創建一個用戶,需要操作三個表,三個sql.

sql1:='insert into table1...';
sql2:='insert into table2...';
sql3:='insert into table3...';
假如不加事務, 到sql1,sql2都執行通過,但是sql3 執行錯誤了..
就有可能造成數據庫的相關數據不同步,這樣就會產生很多影響

這時候就需要加個事務

===========事務開始===========

sql1:='insert into table1...';
sql2:='insert into table2...';
sql3:='insert into table3...';

===========事務提交===========

如果中間發生意外,就事務回滾...

除非三個sql都執行通過,事務提交後,所有的數據才最終寫入數據庫,
如果任何一條sql執行錯誤, 事務回滾,前面操作成功的sql也將無效.
所有數據都不會寫入庫. 保證數據庫各個表數據一致。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章