Microsoft SQL Server 2000 超級管理手冊(十九)

19. 了解交易與交易鎖定

什麼是交易?

ACID 屬性

交易模式

交易復原

交易鎖定

封鎖與死結

鎖定提示

本章總結

本章將闡明交易和交易鎖定的基本法則,學習什麼是交易、Microsoft SQL Sever 2000對有效交易所要求的屬性、交易的起始與結束可指定使用哪些交易模式,以及如何認可及復原交易;還會看到執行交易時SQL Server所使用的鎖定類型和模式,以及「封鎖」(blocking)和「死結」(deadlocking)的概念;最後介紹您在交易中可能會使用到的一些資料表鎖定提示。

什麼是交易?
 

「交易(Transaction)」是以工作的單一邏輯單元(Logic Unit)來執行的一系列相關作業。交易使SQL Server確保一定水平的資料完整性和資料可回復性。每個資料庫都必須擁有所謂的「交易記錄檔(transaction log)」,用於保存對資料庫進行修改(插入、更新或刪除)的所有交易記錄。一旦發生了錯誤或系統故障,SQL Server便使用該交易記錄檔來回復資料。

交易的完整性,部分要靠程式設計人員來達成。程式設計人員必須知道何時開始交易、何時終止交易,以及以什麼順序來進行資料修改,以確保資料的邏輯一致性和有意義。現在您知道什麼是交易了,讓我們來看看有效交易要求的屬性。

ACID屬性
 

一個交易必須符合四個特定要求才有資格作為一個有效的交易,這些要求被稱為「ACID屬性」,ACID是「不可部分完成性(Atomicity)」、「一致性(Consistency)」、「隔離性(Isolation)」和「耐久性(Durability)」的英文縮寫。SQL Server提供機制來幫助確認一個交易是否符合每一個要求。

不可部分完成性
 

如果交易成功,那麼SQL Server保證交易中的所有資料修改都是集體性的完成;而當交易不成功時,就不作任何修改。換句話說,SQL Server確保了交易的不可部分完成性。交易必須作為一個不可分割的基本單元來執行,所以稱為不可部分完成性。要交易獲得成功,交易的每一個步驟(或陳述式)都必須成功。如果一個步驟失敗,整個交易就失敗了,而且從該交易的開始之後所作的修改都將會取消。SQL Server提供了交易管理機制,它自動執行確定交易成功或失敗的任務,而且如果失敗,它必定會取消所有的資料修改。

一致性
 

SQL Server還會確保交易的一致性。一致性意味著在交易完成後,所有的資料保持一致的狀態,這保證了資料的完整性,無論交易是成功還是失敗。在交易之前,資料庫必須處於一個一致的狀態-亦即資料維持其完整性,而且內在的結構,例如B-tree索引和雙連結清單(double linked lists),是正確無誤的。在交易發生後,資料庫也必須保持一致的狀態,如果交易成功就變為新的狀態,或是如果交易失敗,會保持與交易開始前的狀態一致。

一致性也是SQL Server提供的交易管理特性。如果您的資料一致,交易將保持邏輯一致和資料完整,SQL Server將確保交易後的資料一致性。當您在分散式環境中使用資料複寫時,能夠達到不同等級的一致性,其範圍從最後的交易收斂(或潛在的一致性)到即時交易一致性均包含在內。一致性的等級取決於您使用的複寫類型。如需獲得更多資訊,請參閱 第26章 到 第28章 。

隔離性
 

「隔離性」意指每一個交易產生的作用,會如同此交易是系統中唯一的一個交易;也就是說,一個交易所作的修改與任何其他同時發生的交易所作的修改是隔離的。在一個交易的變更得到認可之前,另一個交易並不會受到此交易變更的值所影響。如果交易失敗,它的修改不會有任何影響,因為變更都將被退回。SQL Server允許您決定交易的隔離等級。交易的隔離性動作取決於您指定的隔離等級。


說明

當交易完成後,它的所有修改成為資料庫的永久部分。當交易被退回,變更將被取消,資料庫看上去就像交易從未發生一樣。


隔離等級
 

SQL Server支援四種等級的隔離性。隔離等級是一種設定,用來決定允許交易接受不一致資料的等級-即一個交易與另一個交易隔離的程度。一個較高的隔離等級提高了資料的正確性,但是它減少了可並行的交易數目。另一方面,較低的隔離等級將允許更多交易並行,但卻降低了資料的準確性。您對SQL Server工作階段所指定的隔離等級,決定了工作階段期間所有SELECT陳述式的鎖定行為(除非您設定到另一隔離等級)。鎖定行為會在本章稍後的 〈交易鎖定〉 一節中討論。

  •  讀取未認可 :最低級別的隔離性。在這個等級,交易隔離僅僅足以確保被實體毀壞的資料不可讀取。
     
  •  讀取認可 :SQL Server的預設等級。在這個等級,只允許讀取已認可的資料(已認可資料指的是已經成為資料庫永久部分的資料)。
     
  •  可重覆讀取 :在這個等級,一個交易對同一資料列或數資料列的重覆讀取將得到同樣的結果。(直到該交易完成,否則沒有其他交易能修改資料。)
     
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值