婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹

ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹

熱門標(biāo)簽:溫州人工外呼系統(tǒng) 北京外呼系統(tǒng)公司排名 地圖標(biāo)注付款了怎么找不到了 貴陽智能電銷機(jī)器人官網(wǎng) 北京營銷外呼系統(tǒng)廠家 百度地圖標(biāo)注員是干什么 沈陽400電話是如何辦理 外呼系統(tǒng)口號 外呼系統(tǒng)鄭州

兩個(gè)并發(fā)事務(wù)同時(shí)訪問數(shù)據(jù)庫表相同的行時(shí),可能存在以下三個(gè)問題:

1、幻想讀:事務(wù)T1讀取一條指定where條件的語句,返回結(jié)果集。此時(shí)事務(wù)T2插入一行新記錄,恰好滿足T1的where條件。然后T1使用相同的條件再次查詢,結(jié)果集中可以看到T2插入的記錄,這條新紀(jì)錄就是幻想。

2、不可重復(fù)讀取:事務(wù)T1讀取一行記錄,緊接著事務(wù)T2修改了T1剛剛讀取的記錄,然后T1再次查詢,發(fā)現(xiàn)與第一次讀取的記錄不同,這稱為不可重復(fù)讀。

3、臟讀:事務(wù)T1更新了一行記錄,還未提交所做的修改,這個(gè)T2讀取了更新后的數(shù)據(jù),然后T1執(zhí)行回滾操作,取消剛才的修改,所以T2所讀取的行就無效,也就是臟數(shù)據(jù)。

一、為了處理這些問題,SQL標(biāo)準(zhǔn)定義了以下幾種事務(wù)隔離級別:

READ UNCOMMITTED 幻想讀、不可重復(fù)讀和臟讀都允許。一個(gè)會話可以讀取其他事務(wù)未提交的更新結(jié)果,如果這個(gè)事務(wù)最后以回滾結(jié)束,這時(shí)的讀取結(jié)果就可能是不正確的,所以多數(shù)的數(shù)據(jù)庫都不會運(yùn)用這種隔離級別。

READ COMMITTED 允許幻想讀、不可重復(fù)讀,不允許臟讀。一個(gè)會話只能讀取其他事務(wù)已提交的更新結(jié)果,否則,發(fā)生等待,但是其他會話可以修改這個(gè)事務(wù)中被讀取的記錄,而不必等待事務(wù)結(jié)束,顯然,在這種隔離級別下,一個(gè)事務(wù)中的兩個(gè)相同的讀取操作,其結(jié)果可能不同。

REPEATABLE READ 允許幻想讀,不允許不可重復(fù)讀和臟讀。在一個(gè)事務(wù)中,如果在兩次相同條件的讀取操作之間沒有添加記錄的操作,也沒有其他更新操作導(dǎo)致在這個(gè)查詢條件下記錄數(shù)增多,則兩次讀取結(jié)果相同。換句話說,就是在一個(gè)事務(wù)中第一次讀取的記錄保證不會在這個(gè)事務(wù)期間發(fā)生改動。SQL Server是通過在整個(gè)事務(wù)期間給讀取的記錄加鎖實(shí)現(xiàn)這種隔離級別的,這樣,在這個(gè)事務(wù)結(jié)束前,其他會話不能修改事務(wù)中讀取的記錄,而只能等待事務(wù)結(jié)束,但是SQL Server不會阻礙其他會話向表中添加記錄,也不阻礙其他會話修改其他記錄。

SERIALIZABLE 幻想讀、不可重復(fù)讀和臟讀都不允許。在一個(gè)事務(wù)中,讀取操作的結(jié)果是在這個(gè)事務(wù)開始之前其他事務(wù)就已經(jīng)提交的記錄,SQL Server通過在整個(gè)事務(wù)期間給表加鎖實(shí)現(xiàn)這種隔離級別。在這種隔離級別下,對這個(gè)表的所有DML操作都是不允許的,即要等待事務(wù)結(jié)束,這樣就保證了在一個(gè)事務(wù)中的兩次讀取操作的結(jié)果肯定是相同的。SQL標(biāo)準(zhǔn)所定義的默認(rèn)事務(wù)隔離級別是SERIALIZABLE。

二、Oracle中的隔離級別及實(shí)現(xiàn)機(jī)制:

Oracle數(shù)據(jù)庫支持READ COMMITTED 和 SERIALIZABLE這兩種事務(wù)隔離級別。所以O(shè)racle不支持臟讀,即Oracle中不允許一個(gè)會話讀取其他事務(wù)未提交的數(shù)據(jù)修改結(jié)果,從而防止了由于事務(wù)回滾發(fā)生的讀取不正確

Oracle回滾段,在修改數(shù)據(jù)記錄時(shí),會把這些記錄被修改之前的結(jié)果存入回滾段或撤銷段中。Oracle讀取操作不會阻礙更新操作,更新操作也不會阻礙讀取操作,這樣在Oracle中的各種隔離級別下,讀取操作都不會等待更新事務(wù)結(jié)束更新操作也不會因?yàn)榱硪粋€(gè)事務(wù)中的讀取操作而發(fā)生等待,這也是Oracle事務(wù)處理的一個(gè)優(yōu)勢所在。

Oracle缺省的配置是Read Committed隔離級別(也稱為語句級別的隔離),在這種隔離級別下,如果一個(gè)事務(wù)正在對某個(gè)表執(zhí)行 DML操作,而這時(shí)另外一個(gè)會話對這個(gè)表的記錄執(zhí)行讀取操作,則Oracle會去讀取回滾段或撤銷段中存放的更新之前的記錄,而不會象SQL Server一樣等待更新事務(wù)的結(jié)束。

Oracle的Serializable隔離級別(也稱為事務(wù)級別的隔離),事務(wù)中的讀取操作只能讀取這個(gè)事務(wù)開始之前已經(jīng)提交的數(shù)據(jù)結(jié)果。如果在讀取時(shí),其他事務(wù)正在對記錄執(zhí)行修改,則Oracle就會在回滾段或撤銷段中去尋找對應(yīng)的原來未經(jīng)修改的記錄(而且是在讀取操作所在的事務(wù)開始之前存放于回滾段或撤銷段的記錄),這時(shí)讀取操作也不會因?yàn)橄鄳?yīng)記錄被更新而等待。

設(shè)置隔離級別使用 SET TRANSACTION ISOLATION LEVEL [READ UNCOMMITTED|READ COMMITTED|REPEATABLE READ|SERIALIZABLE]

下面是oracle 設(shè)置SERIALIZABLE隔離級別一個(gè)示例:

左面是事務(wù)T1,右面是事務(wù)T2,因?yàn)門2級別為SERIALIZABLE,所以即使事務(wù)T1在提交了數(shù)據(jù)之后,事務(wù)T2還是看不到T1提交的數(shù)據(jù),幻想讀和不可重復(fù)讀都不允許了。

那如何能查看到T1新增的記錄呢? 上面T1和T2是并發(fā)執(zhí)行,在T1執(zhí)行insert的時(shí)候事務(wù)T2已經(jīng)開始了,因?yàn)門2級別是SERIALIZABLE,所以T2所查詢的數(shù)據(jù)集是T2事務(wù)開始前數(shù)據(jù)庫的數(shù)據(jù)。即事務(wù)T1在事務(wù)T2開始之后的insert和update操作的影響都不會影響事務(wù)T2。現(xiàn)在重新開啟一個(gè)事務(wù)T3 就可以看到T1新增的記錄了。

當(dāng)下列事件發(fā)生時(shí),事務(wù)就開始了:

1、連接到數(shù)據(jù)庫,并執(zhí)行第一條DML語句
2、前一個(gè)事務(wù)結(jié)束后,又輸入了另一條DML語句

您可能感興趣的文章:
  • oracle 合并查詢 事務(wù) sql函數(shù)小知識學(xué)習(xí)
  • Oracle中死事務(wù)的檢查語句
  • MSSQL與Oracle數(shù)據(jù)庫事務(wù)隔離級別與鎖機(jī)制對比
  • Java與Oracle實(shí)現(xiàn)事務(wù)(JDBC事務(wù))實(shí)例詳解
  • ORACLE中如何找到未提交事務(wù)的SQL語句詳解

標(biāo)簽:通遼 溫州 包頭 衡水 衢州 潮州 淮北 定西

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹》,本文關(guān)鍵詞  ORACLE,數(shù)據(jù)庫,事務(wù),隔離,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹》相關(guān)的同類信息!
  • 本頁收集關(guān)于ORACLE數(shù)據(jù)庫事務(wù)隔離級別介紹的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    主站蜘蛛池模板: 荔浦县| 随州市| 新泰市| 乌拉特中旗| 浮山县| 万州区| 乐陵市| 肃北| 北票市| 闵行区| 保亭| 株洲市| 博白县| 昌邑市| 丰宁| 郎溪县| 永城市| 林芝县| 嘉定区| 蒙城县| 宣威市| 普陀区| 昭平县| 金湖县| 金门县| 扎赉特旗| 临夏县| 永安市| 榆中县| 奉节县| 封开县| 柯坪县| 文成县| 绥芬河市| 康保县| 边坝县| 九江县| 满洲里市| 大宁县| 彭泽县| 铜梁县|