什麼是事務

2021-09-24 13:29:04 字數 1445 閱讀 1305

事務就是指一系列的資訊交換操作,這整個過程稱為事務,這一系列的資訊交換是乙個不可分割的整體,也就是說,要麼所有的資訊交換都完成,要麼一次交換都不進行(要麼完全成功,要麼完全失敗)

transaction[trans'ac·tion || træn'zækʃn]

n.  交易, 執行, 辦理

a:atomicity 原子性 事務中所有的操作都是不可再分割的單位,要麼全成功,要麼全失敗

c:consistency 一致性 萬物守恆定律 轉賬,一方多了,一方必然要少了

i:isolation 隔離性 在併發操作中,不同的事務之間應該隔離開來,不能相互干擾

d:durability 永續性 一旦事務提交成功,事務中所有的資料操作都必須要被持久化到資料庫中

資料庫測試表字段值原本為1000

a事務給num加500

b事務讀取num的值(1000)

a事務提交修改(此時測試表中num的值為1500)

但是b拿到的num是1000,此時稱為髒讀

資料庫測試表字段num值原本為1000

a事務查詢num的值(num為1000)

b事務給num加500

b事務提交修改(此時測試表中num的值為1500)

a事務再次查詢num的值(num為1500)

a事務兩次查詢的值不一樣,此時稱為不可重複讀(因為重複讀時資料卻每次都不一樣)

資料庫測試表本來有5條資料

a事務查詢測試表(5條)

b事務向測試表插入一條資料

b事務提交修改(此時測試表中有了6條資料)

a事務再次查詢測試表(6條)

a事務兩次查詢表得到的結果不一樣,就像產生了幻覺,此時稱為幻讀

1,序列化:效能最差,但是不會出現任何併發問題,因為它對同一資料的操作是序列的,非併發訪問 serializable

2,可重複讀:mysql預設 可以處理髒讀和不可重複讀,無法處理幻讀,效能比1好 repeatable read

3,讀已提交:oracle預設 可以處理髒讀,無法處理不可重複讀,幻讀,效能比2好 read committed

4,讀未提交:效能最好,但是可能引發各種併發問題 read uncommitted

定義:當事務方法被另乙個事務方法呼叫時,必須指定事務應該如何傳播,是用原來的事務,還是開啟乙個新事務

spring定義了7種傳播行為

預設是required:如果有事務在執行,當前方法就在這個事務中執行,否則,就開啟乙個新事務,並在自己的事務內執行

第二種是requires_new:當前方法必須啟動新事務,並在它自己的事務中執行,如果有事務正在執行,應該將它掛起

還有34567,一般人也記不住,常用的是前兩種

什麼是事務

一 什麼是事務 事務是應用程式中一系列嚴密的操作,所有操作必須成功完成,否則在每個操作中所作的所有更改都會被撤消。也就是事務具有原子性,乙個事務中的一系列的操作要麼全部成功,要麼乙個都不做。事務的結束有兩種,當事務中的所以步驟全部成功執行時,事務提交。如果其中乙個步驟失敗,將發生回滾操作,撤消撤消之...

什麼是事務

所謂事務,就是乙個操作序列,這些操作要麼都執行,要麼都不執行,它是乙個不可分割的工作單位。開啟用begin,關閉用commit 事務的四大特性 acid 1.原子性a 做一件事情要麼成功要麼不成功 2.一致性c 你中間除了問題也不會出現這個資料丟了的情況 3.隔離性i 兩個sql語句之間不會相互影響...

什麼是事務?

事務 transaction 是併發控制的單位,是使用者定義的乙個操作序列。這些操作要麼都做,要麼都不做,十乙個不可分割的工作單位。通過事務,sql server能將邏輯相關的一組操作繫結在一起。事務通常是以begin transaction開始,以commit或rollback結束。commit表...