spring支援的資料庫事務傳播屬性和事務隔離級別

2021-10-11 04:05:16 字數 2271 閱讀 8412

title: ssm - spring支援的常用資料庫事務傳播屬性和事務隔離級別

date: 2023年11月11日 17:05:40

tag:

- ssm

- 資料庫

- 事務

- 面試題

收穫:ssm學習筆記。

事務是恢復和併發控制的基本單位。

事務應該具有4個屬性:原子性、一致性、隔離性、永續性。這四個屬性通常稱為acid特性

屬性釋義

原子性(atomicity)

乙個事務是乙個不可分割的工作單位,事務中包括的操作要麼都做,要麼都不做。

一致性(consistency)

事務必須是使資料庫從乙個一致性狀態變到另乙個一致性狀態。一致性與原子性是密切相關的。

隔離性(isolation)

乙個事務的執行不能被其他事務干擾。即乙個事務內部的操作及使用的資料對併發的其他事務是隔離的,併發執行的各個事務之間不能互相干擾。

永續性(durability)

永續性也稱永久性(permanence),指乙個事務一旦提交,它對資料庫中資料的改變就應該是永久性的。接下來的其他操作或故障不應該對其有任何影響。

//請簡單介紹spring支援的常用資料庫事務傳播屬性和事務隔離級別?

/** * 事務的屬性:

* 1.★propagation:用來設定事務的傳播行為

* 事務的傳播行為:乙個方法執行在了乙個開啟了事務的方法中時,當前方法是使用原來的事務還是開啟乙個新的事務

* -propagation.required:預設值,使用原來的事務

* -propagation.requires_new:將原來的事務掛起,開啟乙個新的事務

* 2.★isolation:用來設定事務的隔離級別

* -isolation.repeatable_read:可重複讀,mysql預設的隔離級別

* -isolation.read_committed:讀已提交,oracle預設的隔離級別,開發時通常使用的隔離級別

*/

當事務方法被另乙個事務方法呼叫時,必須指定事務應該如何傳播。例如:方法可能繼承在現有事務中執行,也可能開啟乙個新事務,並在自己的事務中執行。 事務的傳播行為可以由傳播屬性指定。spring定義了7種型別的傳播行為。

傳播屬性

描述required (預設)

如果有事務在執行,當前的方法就在這個事務內執行,否則,就啟動乙個新的事務,並在自己的事務內執行

requires_new

當前的方法必須啟動新的事務,並在它自己的事務內執行,如果有事務正在執行,應該將它掛起

supports

如果有事務正在執行,當前的方法就在這個事務內執行。否則它可以不執行在事務中

not_supported

當前的方法不應該執行在事務中。如果有執行的事務,將它掛起

mandatory

當前的方法必須執行在事務內部。如果沒有正在執行的事務,就丟擲異常

never

當前的方法不應該執行在事務中。如果有執行的事務,就丟擲異常

nested

如果有事務在執行,當前的方法就應該在這個事務的巢狀事務內執行。否則,就啟動乙個新的事務,並在它自己的事務內執行

假設現在有兩個事務:transaction01和transaction02併發執行

不可重複讀 幻讀

資料庫系統必須具有隔離併發執行各個事務的能力,使他們不會相互影響,避免各種併發問題。乙個事務與其他事務隔離的程度稱為隔離級別。sql標準中規定了好多事務隔離級別,不同隔離級別對應不同的干擾程度,隔離級別越高,資料一致性就越好,效能開銷越大
各個隔離級別解決併發問題的能力見下表

隔離級別

髒讀不可重複讀

幻讀read uncommitted有有

有read committed無有

有repeatable read無無

有serializable無無

各種資料庫產品對事務隔離級別的支援程度

隔離級別

oracle

mysql

read uncommittedx√

read committed

√(預設)

√repeatable read

x√(預設)

serializable√√

資料庫事務的隔離以及spring的事務傳播機制

資料庫的事務隔離 mysql innodb事務的隔離級別有四級,預設是 可重複讀 rr repeatable read oracle預設的是提交讀。rc 四個級別逐漸增強,每個級別解決乙個問題。spring的事務傳播機制 spring在transactiondefinition介面中規定了7種型別的...

資料庫 Spring事務

隔離級別 隔離級別的值 導致的問題 read uncommitted 0導致髒讀 read committed 1避免髒讀,允許不可重複讀和幻讀 repeatable read 2避免髒讀,不可重複讀,允許幻讀 serializable 3序列化讀,事物只能乙個乙個執行,避免了髒讀 不可重複讀 幻讀...

資料庫事務和Spring事務傳播

一 事務的基本要素 acid 1 原子性 atomicity 事務開始後所有操作,要麼全部做完,要麼全部不做,即事務是乙個不可分割的整體。2 一致性 consistency 事務開始前和結束後,資料庫的完整性約束沒有被破壞 3 隔離性 isolation 同一時間,不同的事務之間彼此沒有任何干擾。4...