日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
SQLServer事務(wù)隔離級別和Oracle中的區(qū)別

SQL Server事務(wù)隔離級別和Oracle中的事務(wù)隔離級別有所不同,在了解二者的區(qū)別之前,先讓我們來了解一下事務(wù)隔離級別都有哪些。

創(chuàng)新互聯(lián)建站憑借在網(wǎng)站建設(shè)、網(wǎng)站推廣領(lǐng)域領(lǐng)先的技術(shù)能力和多年的行業(yè)經(jīng)驗(yàn),為客戶提供超值的營銷型網(wǎng)站建設(shè)服務(wù),我們始終認(rèn)為:好的營銷型網(wǎng)站就是好的業(yè)務(wù)員。我們已成功為企業(yè)單位、個(gè)人等客戶提供了成都做網(wǎng)站、成都網(wǎng)站設(shè)計(jì)服務(wù),以良好的商業(yè)信譽(yù),完善的服務(wù)及深厚的技術(shù)力量處于同行領(lǐng)先地位。

在SQL92標(biāo)準(zhǔn)中,事務(wù)隔離級別分為四種,分別為:

Read Uncommitted
Read Committed
Read Repeatable
Serializable

其中Read Uncommitted與Read Committed為語句級別的,而Read Repeatable與Serializable是針對事務(wù)級別的。
在Oracle和SQL Server中設(shè)置事務(wù)隔離級別的語句是相同的,都使用SQL92標(biāo)準(zhǔn)語法,即:
Set Transaction Isolation Level Read Committed
上面示例中的Read Committed可以被替換為其他三種隔離級別中的任意一種。

1)SQL Server中的隔離級別及實(shí)現(xiàn)機(jī)制

在SQL Server中提供了所有這四種隔離級別。
下面我們討論在SQL Server中,這幾種隔離級別的含義及其實(shí)現(xiàn)方式。

Read Uncommitted:一個(gè)會話可以讀取其他SQL Server事務(wù)未提交的更新結(jié)果,如果這個(gè)事務(wù)***以回滾結(jié)束,這時(shí)的讀取結(jié)果就可能是錯(cuò)誤的,所以多數(shù)的數(shù)據(jù)庫應(yīng)用都不會使用這種隔離級別。

Read Committed:這是SQL Server的缺省隔離級別,設(shè)置為這種隔離級別的事務(wù)只能讀取其他SQL Server事務(wù)已經(jīng)提交的更新結(jié)果,否則,發(fā)生等待,但是其他會話可以修改這個(gè)事務(wù)中被讀取的記 錄,而不必等待事務(wù)結(jié)束,顯然,在這種隔離級別下,一個(gè)事務(wù)中的兩個(gè)相同的讀取操作,其結(jié)果可能不同。

Read Repeatable:在一個(gè)SQL Server事務(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:在一個(gè)SQL Server事務(wù)中,讀 取操作的結(jié)果是在這個(gè)事務(wù)開始之前其他事務(wù)就已經(jīng)提交的記錄,SQL Server通過在整個(gè)事務(wù)期間給表加鎖實(shí)現(xiàn)這種隔離級別。在這種隔離級別下,對這個(gè)表的所有DML操作都是不允許的,即要等待事務(wù)結(jié)束,這樣就保證了在 一個(gè)事務(wù)中的兩次讀取操作的結(jié)果肯定是相同的。

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

在 Oracle中,沒有Read Uncommitted及Repeatable Read隔離級別,這樣在Oracle中不允許一個(gè)會話讀取其他事務(wù)未提交的數(shù)據(jù)修改結(jié)果,從而避免了由于事務(wù)回滾發(fā)生的讀取錯(cuò)誤。Oracle中的 Read Committed和Serializable級別,其含義與SQL Server類似,但是實(shí)現(xiàn)方式卻大不一樣。

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

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

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


文章題目:SQLServer事務(wù)隔離級別和Oracle中的區(qū)別
標(biāo)題路徑:http://www.dlmjj.cn/article/cdiocec.html