1. 程式人生 > >【資料庫視訊】事務、鎖、系統與原資料函式、BEGIN…END

【資料庫視訊】事務、鎖、系統與原資料函式、BEGIN…END

一、事務

管理語句:

  • BEGIN  TRANSACTION(開啟)

  • COMMIT  TRANSACTION(提交)

  • ROLLBACK  TRANSACTION(回滾)

  • SAVE  TRANSACTION(儲存)

二、鎖

封鎖,就是一個事務可向系統提出請求,對被操作的資料加鎖。其他事務必須等到此事務解鎖之後才能訪問該資料。

鎖的型別:

  • 共享(S)鎖,用於讀操作

  • 獨佔(X)鎖,用於寫操作

  • 更新(U)鎖

三、系統與原資料函式

CONVERT()         

將一種資料型別的資料轉變為另一種資料型別的資料

CURRENT USER()  

返回當前使用者的名稱

ISDATE()  

判斷它的輸入是不是一個有效日期

ISNULL()  

用一個指定替換值替換任何控制

ISNUMERRIC() 

判斷它的輸入是否是一個數值

四、BEGIN…END語句塊

流程控制語句,按組執行語句塊

  • BEGIN

  • {

  • Sql_statement | statement_block

  • }

  • End

五、SQL Server 2008事務模式

  • 自動提交事務

每條單獨的語句都是一個事務

  • 顯式事務

每個事務均以BEGIN TRANSACTION語句顯式開始,以COMMIT或ROLLBACK語句顯式結束

  • 隱式事務

在前一個事務完成時新事務隱式啟動,但每個事務仍以COMMIT或ROLLBACK語句顯式完成

  • 批處理級事務

只能應用於多個活動結果集。。。

六、XACT-ABORT
選項

用於指定當SQL語句出現執行時錯誤時,SQL Server是否自動回滾到當前事務,語法格式:

  • SET XACT_ABORT{ ON | OFF}

ON:產生錯誤時,則整個事務將終止並回滾;OFF:有時只回滾產生錯誤的SQL語句,而事務將繼續進行處理

它的設定是在執行或執行時設定,而不是在分析時設定。

七、死鎖

指兩個或兩個以上的程序在執行過程中,因爭奪資源而造成的一種互相等待的現象

必要條件:互斥條件

                  請求與保持條件

                  不剝奪條件

                  迴圈等待條件

死鎖的解除和預防:

                 按同一順序訪問物件

                 避免事務中的使用者互動

                 保持事務簡短並在一個批處理中

                 使用低隔離級別

                 使用繫結連線

死鎖的建議:

(1)對於頻繁使用的表使用集簇化的索引

(2)設法避免一次性影響大量記錄的T-SQL語句,特別是INSERT和UPDATE語句

(3)設法讓UPDATE和DELETE語句使用索引

(4)使用巢狀事務是,避擴音交和回退衝突

(5)對一些資料不需要及時讀取更新值的表在寫SQL的時候在表後臺加上(nolock),如:Select * from tableA(nolock)