SQL Server的事務操作隔離模式介紹
一般而言,最好讓SQL Server以默認形式在隔離事務操作;畢竟,隔離是ACID模型的基本原則之一。但是,有時候因為業(yè)務需求的原因,數(shù)據(jù)庫管理員不得不違背默認行為,而 是采取更靈活一點的方法來進行事務操作隔離。針對數(shù)據(jù)庫管理員遇到的這類情況,SQL Serve提供了五種不同的事務操作隔離模式。在詳細介紹這些事務操作隔離模式之前,必需先了管理員會遇到的數(shù)據(jù)庫問題:
1.臟數(shù)據(jù)讀寫,這種情況發(fā)生在當一個事務讀寫由另一個事務修改而未提交的數(shù)據(jù)的時候。如果另一個事物永遠都不提交其修改數(shù)據(jù),那么第一個事務就永遠都得到一個無效的值,即臟數(shù)據(jù)。
2.不可重復讀寫,這種情況發(fā)生在當一個事務在試圖重復讀取同一數(shù)據(jù),而另一個事務在這第一個事務重復讀取之前修改了此數(shù)據(jù)的時候。這樣會使第一個事務在讀取同一數(shù)據(jù)時獲得兩個不同的值,導致原始數(shù)據(jù)讀取變成不可重復。
3.影象讀寫,這種情況發(fā)生在當一個事務在某一個表格中進行多次數(shù)據(jù)查詢,而另一個事務插入或者刪除滿足查詢條件的數(shù)據(jù)行。這會造成前一個事務獲得或失去一個“影象”值。
SQL Server的每一種隔離模式都試圖解決以上問題中的部分,使數(shù)據(jù)庫管理員能夠保持事務操作隔離和業(yè)務需求之間的平衡。以下是SQL Server的五種隔離模式:
1.讀寫提交隔離模式,這是SQL Server默認的隔離模式,數(shù)據(jù)庫不允許事務操作讀寫由未提交的事務操作寫的數(shù)據(jù)。這個模式可以防止產(chǎn)生臟數(shù)據(jù)讀寫,但是不能防止影象讀寫或不可重復讀寫的情況。
2.讀寫未提交隔離模式,這種模式基本在事務操作之間沒有進行隔離。任何事務都可以讀寫由另一個未提交的事務寫的數(shù)據(jù)。這種模式下,事務操作很容易出現(xiàn)臟數(shù)據(jù)讀寫、影象讀寫和不可重復讀寫的情況。
3.可重復讀寫隔離模式,比讀寫提交隔離模式更進一步,能夠阻止事務修改正被另一個事務讀寫的數(shù)據(jù),直到讀寫操作結(jié)束。這個隔離模式可以防止臟數(shù)據(jù)讀寫和不可重復讀寫的情況發(fā)生。
4.串行化隔離模式,這個模式運用范圍鎖防止一個事務在另一個事務對數(shù)據(jù)進行讀取時插入或者刪除數(shù)據(jù)行。串行化隔離模式能夠防止上述三種情況的發(fā)生。
5.快照隔離模式,這個模式同樣可以防止三種情況的發(fā)生,只是方法不同。它為每一個事務提供其查詢數(shù)據(jù)的“快照”,事務可以查詢快照,無需返回到源數(shù)據(jù)表格,從而防止產(chǎn)生臟數(shù)據(jù)讀取。
如果想要改變SQL Server使用的隔離模式,只需要輸入以下命令:
可以用以下關鍵詞代替:
· READ COMMITTED
· READ UNCOMMITTED
· REPEATABLE READ
· SERIALIZABLE
· SNAPSHOT
這些都是基本的SQL Server事務隔離模式。
版權聲明:本站文章來源標注為YINGSOO的內(nèi)容版權均為本站所有,歡迎引用、轉(zhuǎn)載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網(wǎng)站,禁止在非www.sddonglingsh.com所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內(nèi)容來源于網(wǎng)友推薦、互聯(lián)網(wǎng)收集整理而來,僅供學習參考,不代表本站立場,如有內(nèi)容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。