1. 程式人生 > >數據庫的事務處理和並發控制

數據庫的事務處理和並發控制

upd 環境 性能 特點 安全 trunc 開始 獨立性 復雜

數據庫的事務處理和並發控制

數據庫的事務處理和並發控制數據庫的事務處理和並發控制數據庫的事務處理和並發控制 事務是一個邏輯工作單元,SQL Server 2005 提供了幾種自動的可以通過編程來完成的機制,包括事務日誌、SQL事務控制語句,以及事務處理運行過程中通過鎖定保證數據完整性的機制。當用戶對數據庫並發訪問時,為了確保事務完整性和數據庫一致性,需要使用鎖定。事務和鎖是兩個緊密聯系的概念。通過事務、批和鎖的使用,還可以監測系統,以及優化物理數據庫。作業是一種多步執行的任務。 本章主要介紹 SQL Server 2005數據庫系統的事務和鎖的基本概念,事務、批、鎖的創建和使用,通過事務、批、鎖監測系統和優化物理數據庫的操作,以及作業的設置。 12.1 事物的基本概念和事物的基本概念和事物的基本概念和事物的基本概念和SQL Server 2005事物處理事物處理事物處理事物處理 事務和存儲過程類似,由一系列T-SQL語句組成,是 SQL Server 2005系統的執行單元。本節主要介紹 SQL Server 2005中事務的概念,以及事務的創建、使用。 12.1.1 事務概述事務概述事務概述事務概述 關系型數據庫有4個顯著的特征:安全性、完整性、檢測性和並發性。數據庫的安全性就是要保證數據庫數據的安全,防止未授權用戶隨意修改數據庫中的數據,確保數據的安全。完整性是數據庫的一個重要特征,也是保證數據庫中的數據切實有效、防止錯誤、實現商業規則的一種重要機制。在數據庫中,區別所保存的數據是無用的垃圾還是有價值的信息,主要是依據數據庫的完整性是否健全,即實體完整性、域完整性和參考完整性。對任何發現影響系統性能的因素和瓶頸,采取切合實際的策略,解決問題,提高系統的性能。並發性是用來解決多個用戶對同一數據進行操作時的問題。特別是對於網絡數據庫來說,這個特點更加突出。提高數據庫的處理速度,單單依靠提高計算機的物理速度是不夠的,還必須充分考慮數據庫的並發性問題,提高數據庫並發性的效率。 那麽如何保證並發性呢?在 SQL Server 2005中,通過使用事務和鎖機制,可以解決數據庫的並發性問題。 在 SQL Server 2005中,事務要求處理時必須滿足ACID原則,即原子性(A)、一致性(C)、隔離性(I)和持久性(D)。 原子性:原子性也稱為自動性,是指事務必須執行一個完整的工作,要麽執行全部數據的操作,要麽全部不執行。 一致性:一致性是指當事務完成時,必須所有的數據具有一致的狀態。 隔離性 隔離性:也稱為獨立性,是指並行事務的修改必須與其他並行事務的修改相互獨立。一個事務處理數據,要麽是其他事務執行之前的狀態,要麽是其他事務執行之後的狀態,但不能處理其他正在處理的數據。 持久性 持久性:是指當一個事務完成之後,將影響永久性地存於系統中,即事務的操作將寫入數據庫中。 事務的這種機制保證了一個事務或者提交後成功執行,或者提交後失敗回滾,二者必居其一,因此,事務對數據的修改具有可恢復性,即當事務失敗時,它對數據的修改都會恢復到該事務執行前的狀態。而使用一般的批處理,則有可能出現有的語句被執行,而另一些語句沒有被執行的情況,從而有可能造成數據不一致。 事務開始之後,事務所有的操作都陸續寫到事務日誌中。這些任務操作在事務日誌中記錄一個標誌,用於表示執行了這種操作,當取消這種事務時,系統自動執行這種操作的反操作,保證系統的一致性。系統自動生成一個檢查點機制,這個檢查點周期地發生。檢查點的周期是系統根據用戶定義的時間間隔和系統活動的頻度由系統自動計算出來的時間間隔。檢查點周期地檢查事物日誌,如果在事務日誌中,事務全部完成,那麽檢查點將事務提交到數據庫中,並且在事務日誌中做一個檢查點提交標記。如果在事務日誌中,事務沒有完成,那麽檢查點將事務日誌中的事務不提交到數據庫中,並且在事務日誌中做一個檢查點未提交標記。 12.1.2 事務的類型事務的類型事務的類型事務的類型 根據事務的設置、用途的不同,SQL Server 2005將事務分為多種類型。 1. 根據系統的設置分類根據系統的設置分類根據系統的設置分類根據系統的設置分類 根據系統的設置,SQL Server 2005將事務分為兩種類型:系統提供的事務和用戶定義的事務,分別簡稱為系統事務和用戶定義事務。 (1)系統事務 系統提供的事務是指在執行某些語句時,一條語句就是一個事務。但是要明確,一條語句的對象既可能是表中的一行數據,也可能是表中的多行數據,甚至是表中的全部數據。 因此,只有一條語句構成的事務也可能包含了多行數據的處理。 系統提供的事務語句如下: ALTER TABLE 、CREATE、DELETE、DROP、FETCH、GRANT、INSERT、OPEN、REBOKE、SELECT、UPDATE、TRUNCATE TABLE 這些語句本身就構成了一個事務。 例12-1使用CREATE TABLE創建一個表。 CREATE TABLE student (id CHAR(10), name CHAR(6), sex CHAR(2) ) 說明:這條語句本身就構成了一個事務。這條語句由於沒有使用條件限制,那麽這條語句就是創建包含3個列的表。要麽創建全部成功,要麽全部失敗。 (2)用戶定義事務 在實際應用中,大多數的事務處理采用了用戶定義的事務來處理。在開發應用程序時,可以使用BEGIN TRANSACTION語句來定義明確的用戶定義的事務。在使用用戶定義的事務時,一定要註意事務必須有明確的結束語句來結束。如果不使用明確的結束語句來結束,那麽系統可能把從事務開始到用戶關閉連接之間的全部操作都作為一個事務來對待。事務的明確結束可以使用兩個語句中的一個:COMMIT語句和ROLLBACK語句。COMMIT語句是提交語句,將全部完成的語句明確地提交到數據庫中。ROLLBACK語句是取消語句,該語句將事務的操作全部取消,即表示事務操作失敗。 還有一種特殊的用戶定義的事務,這就是分布式事務。例12-1事務是在一個服務器上的操作,其保證的數據完整性和一致性是指一個服務器上的完整性和一致性。但是,如果一個比較復雜的環境,可能有多臺服務器,那麽要保證在多臺服務器環境中事務的完整性和一致性,就必須定義一個分布式事務。在這個分布式事務中,所有的操作都可以涉及對多個服務器的操作,當這些操作都成功時,那麽所有這些操作都提交到相應服務器的數據庫中,如果這些操作中有一個操作失敗,那麽這個分布式事務中的全部操作都將被取消。 2. 根據運行模式分類根據運行模式分類根據運行模式分類根據運行模式分類 根據運行模式,SQL Server 2005將事務分為4種類型:自動提交事務、顯示事務、隱式事務和批處理級事務。 (1)自動提交事務

數據庫的事務處理和並發控制