摘要:隔離級別個等級的事務隔離級別,在相同的數(shù)據(jù)環(huán)境下,使用相同的輸入,執(zhí)行相同的工作,根據(jù)不同的隔離級別,可以導致不同的結果。不同事務隔離級別能夠解決的數(shù)據(jù)并發(fā)問題的能力是不同的。
Java知識點總結(JDBC-事務)
@(Java知識點總結)[Java, JDBC]
事務 事務基本概念一組要么同時執(zhí)行成功,要么同時執(zhí)行失敗的 SQL 語句。是數(shù)據(jù)庫操作的一個執(zhí)行單元!
事務開始于:
執(zhí)行 commit 或 rollback 語句。
執(zhí)行一條 DDL 語句,例如 create table 語句;在這種情況下,會自動執(zhí)行 commit 語句。
執(zhí)行一條 DCL 語句,例如 grant 語句;在這種情況下,會自動執(zhí)行 commit 語句。
斷開與數(shù)據(jù)庫的連接。
執(zhí)行了一條 DML 語句,該語句卻失敗了;在這種情況下,會為這個無效的 DML 語句執(zhí)行 rollback 語句。
事務的四大特點(ACID)
atomicity(原子性)
表示一個事務內(nèi)的所有操作是一個整體, 要么全部成功,要么全失敗
consistency(一致性)
表示一個事務內(nèi)有 一個操作失敗時 ,所有的更改過的數(shù)據(jù)都必須 回滾到修改前的狀態(tài) ;
isolation(隔離性)
事務查看數(shù)據(jù)時 數(shù)據(jù)所處的狀態(tài) ,要么是另一并發(fā)事務 修改它之前 的狀態(tài),要么是另一事務 修改它之后 的狀態(tài),事務不會查看中間狀態(tài)的數(shù)據(jù)。
durability(持久性)
持久性事務完成之后,它對于系統(tǒng)的 影響是永久性的 。
事務并發(fā)處理可能引起的問題讀臟(dirty read):一個事務讀取了另一個事務尚未提交的數(shù)據(jù),
不可重復讀(non-repeatable read):一個事務的操作導致另一個事務前后兩次讀取到不同的數(shù)據(jù)
幻讀(phantom read):一個事務的操作導致另一個事務前后兩次查詢的結果數(shù)據(jù)量不同。
隔離級別4個等級的事務隔離級別,在相同的數(shù)據(jù)環(huán)境下,使用相同的輸入,執(zhí)行相同的工作,根據(jù)不同的隔離級別,可以導致不同的結果。不同事務隔離級別能夠解決的數(shù)據(jù)并發(fā)問題的能力是不同的。
SERIALIZABLE(串行化)
不會出現(xiàn)任何并發(fā)問題,因為它是對同一數(shù)據(jù)的訪問是串行的,非并發(fā)訪問的;
性能最差
REPEATABLE READ(可重復讀)(MySQL)
防止臟讀和不可重復讀,不能處理幻讀
性能比SERIALIZABLE好
READ COMMITTED(讀已提交數(shù)據(jù))(Oracle)
防止臟讀,不能處理不可重復讀和幻讀;
性能比REPEATABLE READ好
READ UNCOMMITTED(讀未提交數(shù)據(jù))
可能出現(xiàn)任何事物并發(fā)問題,什么都不處理。
性能最好
MySQL的默認隔離級別為Repeatable read,可以通過下面語句查看:
SELECT @@`TX_ISOLATION`;
也可以通過下面語句來設置當前連接的隔離級別:
SET TRANSACTION ISOLATION LEVEL REPEATABLE READ ;//[4選1]
con.setTransactionIsolation(int level) :參數(shù)可選值如下:
Connection.TRANSACTION_READ_UNCOMMITTED; Connection.TRANSACTION_READ_COMMITTED; Connection.TRANSACTION_REPEATABLE_READ; Connection.TRANSACTION_READ_SERIALIZABLE。
文章版權歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/71462.html
摘要:前言由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 前言 由于寫的文章已經(jīng)是有點多了,為了自己和大家的檢索方便,于是我就做了這么一個博客導航。 由于更新比較頻繁,因此隔一段時間才會更新目錄導航哦~想要獲取最新原創(chuàng)的技術文章歡迎關注我的公眾號:Java3y Java3y文章目錄導航 Java基礎 泛型就這么簡單 注解就這么簡單 Druid數(shù)據(jù)庫連接池...
摘要:我在面試前針對基礎也花了不少的時間,期間也將自己寫過的博文粗略地刷了一遍,同時也在網(wǎng)上找了不少比較好的資料部分是沒看完的。看面試題也是校驗自己是否真正理解了這個知識點,也很有可能會有新的收獲。 一、前言 只有光頭才能變強 回顧前面: 廣州三本找Java實習經(jīng)歷 上一篇寫了自己面試的經(jīng)歷和一些在面試的時候遇到的題目(筆試題和面試題)。 我在面試前針對Java基礎也花了不少的時間,期間也將...
摘要:和事務的關系關系型數(shù)據(jù)庫某些消息隊列等產(chǎn)品或中間件稱為事務性資源,因為它們本身支持事務,也能夠處理事務。事務的傳播特性,,,,,,強制要求要有一個物理事務。外圍事務不會被內(nèi)部事務的回滾狀態(tài)影響。不支持當前事務。 Spring和事務的關系 關系型數(shù)據(jù)庫、某些消息隊列等產(chǎn)品或中間件稱為事務性資源,因為它們本身支持事務,也能夠處理事務。 Spring很顯然不是事務性資源,但是它可...
摘要:本文是作者自己對中線程的狀態(tài)線程間協(xié)作相關使用的理解與總結,不對之處,望指出,共勉。當中的的數(shù)目而不是已占用的位置數(shù)大于集合番一文通版集合番一文通版垃圾回收機制講得很透徹,深入淺出。 一小時搞明白自定義注解 Annotation(注解)就是 Java 提供了一種元程序中的元素關聯(lián)任何信息和著任何元數(shù)據(jù)(metadata)的途徑和方法。Annotion(注解) 是一個接口,程序可以通過...
閱讀 3400·2021-11-22 09:34
閱讀 2926·2021-10-09 09:43
閱讀 1484·2021-09-24 09:47
閱讀 2228·2019-08-30 12:53
閱讀 1030·2019-08-29 14:00
閱讀 3417·2019-08-29 13:17
閱讀 2304·2019-08-28 18:00
閱讀 1319·2019-08-26 12:00