什麼是事務
- 在資料庫 一組操作中 要麼全部成功 要麼全部失敗 簡單說 就是增删改查 要麼全部成功 要麼全部失敗
事務有什麼特性ACID
- 原子性:原子性不可分割 整個操作要麼都成功 要麼都失敗
- 一緻性:資料 事務前後的資料保持一緻
- 持久性:指事務一旦被送出 就無法被修改
- 隔離性:兩個事務之間 并發通路的情況
隔離有什麼問題
- 髒讀:一個事務讀到另一個事務沒有送出的資料
- 不可重複讀:一個事務讀到另一個事務已經送出的事務(update)
- 幻讀:一個事務讀到另一個事務已經送出的事務(insert)
隔離級别有哪些
- 讀未送出:一個事務讀到另一個事務沒有送出的資料(存放3個問題 解決0個問題)
- 讀已送出:一個事務讀到另一個事務已經送出的資料(存放2個問題 解決1個問題 髒讀)
- 可重複讀:在一個事務中讀到的資料是重複的(存放1個問題 解決2個問題 髒讀 不可重複讀)
- 串行化:單事務(存放0個問題 解決3個問題 髒讀 不可重複讀 幻讀)
對比:
性能:讀未送出 > 讀已送出 > 可重複讀 > 串行化
安全:串行化 < 可重複讀 < 讀已送出 < 讀未送出
預設隔離級别:
——mysql:可重複讀
——Oracle:讀已送出(Oracle有自己的一套安全管理事務)
事務管理平台管理器【重點】
在spring-tx裡面有一個事務管理平台管理器中 有一個getTransaction方法 參數是一TransactionDefinition事務定義
![](https://img.laitimes.com/img/_0nNw4CM6IyYiwiM6ICdiwiI0gTMx81dsQWZ4lmZf1GLlpXazVmcvwFciV2dsQXYtJ3bm9CX9s2RkBnVHFmb1clWvB3MaVnRtp1XlBXe0xCMy81dvRWYoNHLwEzX5xCMx8FesU2cfdGLwMzX0xiRGZkRGZ0Xy9GbvNGLpZTY1EmMZVDUSFTU4VFRR9Fd4VGdsYTMfVmepNHLrJXYtJXZ0F2dvwVZnFWbp1zczV2YvJHctM3cv1Ce-cmbw5iMyETO1UmZ2YDZ4MGOhJTYyYzX4IzMxATMwEzLcZDMyIDMy8CXn9Gbi9CXzV2Zh1WavwVbvNmLvR3YxUjLyM3Lc9CX6MHc0RHaiojIsJye.png)
事務定義中有隔離級别 傳播行為等