免费视频淫片aa毛片_日韩高清在线亚洲专区vr_日韩大片免费观看视频播放_亚洲欧美国产精品完整版

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
數(shù)據(jù)庫(kù)事務(wù)級(jí)別鎖行為說(shuō)明

SET TRANSACTION ISOLATION LEVEL

控制由連接發(fā)出的所有 Microsoft? SQL Server? SELECT 語(yǔ)句的默認(rèn)事務(wù)鎖定行為。

語(yǔ)法

SET TRANSACTION ISOLATION LEVEL
    { READ COMMITTED
        | READ UNCOMMITTED
        | REPEATABLE READ
        | SERIALIZABLE
    }

參數(shù)

READ COMMITTED

指定在讀取數(shù)據(jù)時(shí)控制共享鎖以避免臟讀,但數(shù)據(jù)可在事務(wù)結(jié)束前更改,從而產(chǎn)生不可重復(fù)讀取幻像數(shù)據(jù)。該選項(xiàng)是 SQL Server 的默認(rèn)值。

READ UNCOMMITTED

執(zhí)行臟讀或 0 級(jí)隔離鎖定,這表示不發(fā)出共享鎖,也不接受排它鎖。當(dāng)設(shè)置該選項(xiàng)時(shí),可以對(duì)數(shù)據(jù)執(zhí)行未提交讀或臟讀;在事務(wù)結(jié)束前可以更改數(shù)據(jù)內(nèi)的數(shù)值,行也可以出現(xiàn)在數(shù)據(jù)集中或從數(shù)據(jù)集消失。該選項(xiàng)的作用與在事務(wù)內(nèi)所有語(yǔ)句中的所有表上設(shè)置 NOLOCK 相同。這是四個(gè)隔離級(jí)別中限制最小的級(jí)別。

REPEATABLE READ

鎖定查詢中使用的所有數(shù)據(jù)以防止其他用戶更新數(shù)據(jù),但是其他用戶可以將新的幻像行插入數(shù)據(jù)集,且幻像行包括在當(dāng)前事務(wù)的后續(xù)讀取中。因?yàn)椴l(fā)低于默認(rèn)隔離級(jí)別,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。

SERIALIZABLE

在數(shù)據(jù)集上放置一個(gè)范圍鎖,以防止其他用戶在事務(wù)完成之前更新數(shù)據(jù)集或?qū)⑿胁迦霐?shù)據(jù)集內(nèi)。這是四個(gè)隔離級(jí)別中限制最大的級(jí)別。因?yàn)椴l(fā)級(jí)別較低,所以應(yīng)只在必要時(shí)才使用該選項(xiàng)。該選項(xiàng)的作用與在事務(wù)內(nèi)所有 SELECT 語(yǔ)句中的所有表上設(shè)置 HOLDLOCK 相同。

注釋

一次只能設(shè)置這些選項(xiàng)中的一個(gè),而且設(shè)置的選項(xiàng)將一直對(duì)那個(gè)連接保持有效,直到顯式更改該選項(xiàng)為止。這是默認(rèn)行為,除非在語(yǔ)句的 FROM 子句中在表級(jí)上指定優(yōu)化選項(xiàng)。

SET TRANSACTION ISOLATION LEVEL 的設(shè)置是在執(zhí)行或運(yùn)行時(shí)設(shè)置,而不是在分析時(shí)設(shè)置。

示例

下例為會(huì)話設(shè)置 TRANSACTION ISOLATION LEVEL。對(duì)于每個(gè)后續(xù) Transact-SQL 語(yǔ)句,SQL Server 將所有共享鎖一直控制到事務(wù)結(jié)束為止。

SET TRANSACTION ISOLATION LEVEL REPEATABLE READGOBEGIN TRANSACTIONSELECT * FROM publishersSELECT * FROM authors...COMMIT TRANSACTION





臟讀

臟讀包含未提交數(shù)據(jù)的讀。例如,事務(wù)1 更改了某行。事務(wù)2 在事務(wù)1 提交更改之前讀取已更改的行。如果事務(wù)1 回滾更改,則事務(wù)2 便讀取了邏輯上從未存在過(guò)的行。

臟讀就是指當(dāng)一個(gè)事務(wù)正在訪問數(shù)據(jù),并且對(duì)數(shù)據(jù)進(jìn)行了修改,而這種修改還沒有提交到數(shù)據(jù)庫(kù)中,這時(shí),另外一個(gè)事務(wù)也訪問這個(gè)數(shù)據(jù),然后使用了這個(gè)數(shù)據(jù)。因?yàn)檫@個(gè)數(shù)據(jù)是還沒有提交的數(shù)據(jù),那么另外一個(gè)事務(wù)讀到的這個(gè)數(shù)據(jù)是臟數(shù)據(jù),依據(jù)臟數(shù)據(jù)所做的操作可能是不正確的。

 

不可重復(fù)讀

不可重復(fù)讀取當(dāng)某個(gè)事務(wù)不止一次讀取同一行,并且一個(gè)單獨(dú)的事務(wù)在兩次(或多次)讀取之間修改該行時(shí)。因?yàn)樵谕粋€(gè)事務(wù)內(nèi)的多次讀取之間修改了該行,所以每次讀取都生成不同值,從而引發(fā)不一致問題。

不可重復(fù)讀是指在一個(gè)事務(wù)內(nèi),多次讀同一數(shù)據(jù)。在這個(gè)事務(wù)還沒有結(jié)束時(shí),另外一個(gè)事務(wù)也訪問該同一數(shù)據(jù)。那么,在第一個(gè)事務(wù)中的兩次讀數(shù)據(jù)之間,由于第二個(gè)事務(wù)的修改,那么第一個(gè)事務(wù)兩次讀到的數(shù)據(jù)可能是不一樣的。這樣就發(fā)生了在一個(gè)事務(wù)內(nèi)兩次讀到的數(shù)據(jù)是不一樣的,因此稱為是不可重復(fù)讀。

 

幻像

幻像通過(guò)一個(gè)任務(wù),在以前由另一個(gè)尚未提交其事務(wù)的任務(wù)讀取的行的范圍中插入新行或刪除現(xiàn)有行。帶有未提交事務(wù)的任務(wù)由于該范圍中行數(shù)的更改而無(wú)法重復(fù)其原始讀取。如果某個(gè)連接設(shè)置其事務(wù)隔離級(jí)別為可串行,則 SQL Server 使用鍵范圍鎖定以防止幻像。

幻覺讀是指當(dāng)事務(wù)不是獨(dú)立執(zhí)行時(shí)發(fā)生的一種現(xiàn)象,例如第一個(gè)事務(wù)對(duì)一個(gè)表中的數(shù)據(jù)進(jìn)行了修改,這種修改涉及到表中的全部數(shù)據(jù)行。同時(shí),第二個(gè)事務(wù)也修改這個(gè)表中的數(shù)據(jù),這種修改是向表中插入一行新數(shù)據(jù)。那么,以后就會(huì)發(fā)生操作第一個(gè)事務(wù)的用戶發(fā)現(xiàn)表中還有沒有修改的數(shù)據(jù)行,就好象發(fā)生了幻覺一樣。

 
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
數(shù)據(jù)庫(kù)隔離級(jí)別(收藏)
SQL server鎖的機(jī)制
SET TRANSACTION ISOLATION LEVEL 詳解
SQL SERVER事務(wù)處理(七)
設(shè)置SQLServer的行版本控制隔離級(jí)別
探索數(shù)據(jù)庫(kù)的事務(wù)隔離級(jí)別
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服