Java数据库篇5——事务
生活随笔
收集整理的這篇文章主要介紹了
Java数据库篇5——事务
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Java數(shù)據(jù)庫篇5——事務(wù)
1、什么是事務(wù)
事務(wù)是一個(gè)整體,由一條或者多條SQL 語句組成,這些SQL語句要么都執(zhí)行成功,要么都執(zhí)行失敗, 只要有 一條SQL出現(xiàn)異常,整個(gè)操作就會(huì)回滾,整個(gè)業(yè)務(wù)執(zhí)行失敗
2、事物的特征
- 原子性:事務(wù)是不可再分的最小的操作單位
- 一致性:事物操作前后總量不變
- 隔離性:各個(gè)事務(wù)的執(zhí)行互不干擾
- 持久性:持久性指事務(wù)一旦提交,對數(shù)據(jù)所做的任何改變,都要記錄到存儲(chǔ)器中
3、 事務(wù)隔離級別
3.1、并發(fā)產(chǎn)生的問題
| 臟讀(Dirty read) | 當(dāng)一個(gè)事務(wù)正在訪問數(shù)據(jù)并且對數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫中,這時(shí)另外一個(gè)事務(wù)也訪問了這個(gè)數(shù)據(jù),使用了這個(gè)數(shù)據(jù) |
| 不可重復(fù)讀(Unrepeatableread) | 指在一個(gè)事務(wù)內(nèi)多次讀同一數(shù)據(jù)。在這個(gè)事務(wù)還沒有結(jié)束時(shí),另一個(gè)事務(wù)也訪問該數(shù)據(jù)。那么,在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改導(dǎo)致第一個(gè)事務(wù)兩次讀取的數(shù)據(jù)可能不太一樣 |
| 幻讀(Phantom read) | 幻讀與不可重復(fù)讀類似。它發(fā)生在一個(gè)事務(wù)(T1)讀取了幾行數(shù)據(jù),接著另一個(gè)并發(fā)事務(wù)(T2)插入了一些數(shù)據(jù)時(shí)。在隨后的查詢中,第一個(gè)事務(wù)(T1)就會(huì)發(fā)現(xiàn)多了一些原本不存在的記錄,就好像發(fā)生了幻覺一樣 |
不可重復(fù)讀和幻讀區(qū)別:不可重復(fù)讀的重點(diǎn)是修改,幻讀的重點(diǎn)在于新增或者刪除
3.2、事務(wù)隔離級別
| 1 | 讀未提交 | read uncommitted | ? | ? | ? | |
| 2 | 讀已提交 | read committed | ? | ? | ? | Oracle和SQLServer |
| 3 | 可重復(fù)讀 | repeatable read | ? | ? | ? | MySql |
| 4 | 串行化 | serializable | ? | ? | ? |
總結(jié)
以上是生活随笔為你收集整理的Java数据库篇5——事务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c mysql web开发实例教程_We
- 下一篇: Java 单例模式:懒加载(延迟加载)和