資料庫事務

2021-08-19 22:17:26 字數 1361 閱讀 5096

1.什麼是事務:事務是使用者定義的乙個資料庫操作序列,這些操作要麼全做要麼全不做,是乙個不可分割的工作單位。

在關聯式資料庫中,乙個事務可以是一條sql語句,或一組sql語句,或整個程式。

2事務的四個特性:原子性(atomicity)、一致性(consistency)、隔離性(isolation)和永續性(durability)

原子性:事務是資料庫的邏輯工作單位,不可分割。eg:乙個事務中有兩個操作系列,分別是a要減少1w元,b要增加1w。這相當於a要轉給b 1w元,這兩個操作序列要麼全做或都不做,不能只做其中乙個,否則就破壞了原子性。

一致性:事務的執行結果必須是使資料庫從乙個一致性狀態轉到另乙個一致性狀態. eg:a有5000元,b有5000元,一共是10000元,現在有乙個事務是a轉給b4000元(a要減少4000元,b要增加4000元),如果只做操作序列中的乙個(eg:a要減少4000元),則事務的執行結果為a有1000元,b有5000元,一共是6000元,這與事務執行前的10000元,不符,所以這就不符合一致性。無論執行多少次事務,ab的總和一定要是10000元,這就是一致性。   

隔離性:當乙個事務執行時,其他事務不能執行。

永續性:事務一旦提交成功,對資料庫中的改變是永久的,不能因為資料庫錯誤而導致提交成功而資料庫中的資料未改變。

在進行資料庫操作時可能產生的幾種問題1,2,3

1:髒讀:eg:員工a的工資10000元,到了開工資的日子,老闆手一抖轉了100000元,但是老闆此時還沒有提交,就在這時a檢視自己開了多少工資,一看,哇,10w,無比的開心,老闆提交之前發現了這個失誤,於是把10w改回了原來的1w,並提交。後來a想確認一下,是不是自己眼花了,又查了自己的賬戶,發現是1w,不是10w(白白的高興了一場)。這就是髒讀:就是讀到了還沒有提交的資料。

2:不可重複讀:eg:老闆a在超市買東西時,付款時查詢時候發現卡里有10w元,此時他的妻子把錢全部轉走借給了閨蜜,並提交事務,此時超市扣款時發現餘額不足,(老闆懵了)哈哈。這就是不可重複讀(read committed):就是讀到了還已經提交的資料。

3:幻讀:a對資料庫表中修改了某一條資料,此時b對資料庫這個表中增加了一條資料,當a再次讀取表時,發現多了一條資料,就好像產生了幻覺一樣。

為了解決這些問題,就要了解一下資料庫事務的隔離級級別了。

資料庫的事務四種隔離級別:1,2,3,4

① serializable (序列化):可避免髒讀、不可重複讀、幻讀的發生。

② repeatable read (可重複讀):可避免髒讀、不可重複讀的發生。

③ read committed (讀已提交):可避免髒讀的發生。

④ read uncommitted (讀未提交):最低級別,任何情況都無法保證。

資料庫事務

事件是訪問並可能更新各種資料項的乙個程式執行單元。事件由事務開始與事務結束之間執行的全體操作組成。為了保證資料完整性,資料庫系統需要維護事務的以下性質 原子性 atomicity 事務中的操作要麼全部成功,要麼全部失敗。一致性 consistency 事務執行前後要保持資料庫的一致性。隔離性 iso...

資料庫 事務

資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務性單元內的所有操作都成功完成,否則不會永久更新面向資料的資源。通過將一組相關操作組合為乙個要麼全部成功要麼全部失敗的單元,可以簡化錯誤恢復並使應用程式更加可靠。乙個邏輯工作單元要成...

資料庫事務

這段時間面試,由於基礎不是特別好,遇到一些要筆試的公司。就會表示出來 今天有人問我,資料庫事務 是什麼。我只感覺十分熟悉。但是又說不出所以然。回來找了一下,現在整理記錄 1 定義 資料庫事務 database transaction 是指作為單個邏輯工作單元執行的一系列操作。事務處理可以確保除非事務...