数据库视频总结三(游标和事务)
1、?游標Cursor?
游標是一種數據訪問機制,它允許用戶訪問單獨的數據行,而不是對整個行集進行操作。它提供了在結果集中一次一行或者多行前進或向后瀏覽數據的能力,我們可以把游標當作一個指針,它可以指定結果中的任何位置,然后允許用戶對指定位置的數據進行處理,這樣可以降低系統開銷和潛在的阻隔情況。
?
游標主要包括兩部分:
游標結果集 ?由定義游標的select語句返回的行的集合
游標位置? ? ?指向這個結果集中的某一行的指針
?
游標的聲明declare:
Declare cursor_name [Insensitive|Scroll] --Insensitive 使用它可以提取數據時不影響 不使用時會提取最新的數據 --Scroll 可以提取任意一行 否則只能逐行提取For select_statement For [read only|update] --只讀|可修改?
2、事務Transaction
事務是數據庫管理系統執行過程中的一個邏輯單位,由一個有限的數據庫操作序列構成。一個數據庫事務通常包含了一個序列的對數據庫的讀/寫操作。
Begin transaction --開始事務 Commit transaction --提交事務 Rollback transaction --回滾事務 Save transaction --保存事務?
事務的存在包含有以下兩個目的:
為數據庫操作序列提供了一個從失敗中恢復到正常狀態的方法,同時提供了數據庫即使在異常狀態下仍能保持一致性的方法;
當多個應用程序在并發訪問數據庫時,可以在這些應用程序之間提供一個隔離方法,以防止彼此的操作互相干擾。
?
ACID性質:并非任意的對數據庫的操作序列都是數據庫事務。數據庫事務擁有以下四個特性,習慣上被稱之為ACID特性:
原子性(Atomicity):事務作為一個整體被執行,包含在其中的對數據庫的操作要么全部成功,要么全部失敗回滾;即要么全部被執行,要么都不執行。
一致性(Consistency):事務應確保數據庫的狀態從一個一致狀態轉變為另一個一致狀態。一致狀態的含義是數據庫中的數據應滿足完整性約束。
拿轉賬來說,假設用戶A和用戶B兩者的錢加起來一共是1000,那么不管A和B之間如何轉賬,轉幾次賬,事務結束后兩個用戶的錢相加起來應該還得是1000,這就是事務的一致性。
隔離性(Isolation):多個事務并發執行時,一個事務的執行不應影響其他事務的執行。
即要達到這么一種效果:對于任意兩個并發的事務T1和T2,在事務T1看來,T2要么在T1開始之前就已經結束,要么在T1結束之后才開始,這樣每個事務都感覺不到有其他事務在并發地執行。
持久性(Durability):已被提交的事務對數據庫的修改應該永久保存在數據庫中。
?
3、鎖Lock
就是一個事務可向系統提出請求,對被操作的數據加鎖(Lock),其他事務必須等到此事務解鎖(Unlock)之后才能訪問該數據。從而在多個用戶并發訪問數據庫時,確保不互相干擾。可鎖定的單位是:行、頁、表、盤區和數據庫。
鎖的分類:
| 鎖的分類 | 說明 |
| ? 共享鎖 S 讀 | 多個事務可封鎖一個共享單位的數據; 任何事務都不能修改加S鎖的數據; 通常加S鎖的數據被讀取完畢,S鎖就立即被釋放。 |
| ? 獨占鎖 X 寫 | 僅允許一個事務封鎖此共享數據; 其他任何事務必須等到X鎖被釋放才能對該數據進行訪問; X鎖一直到事務結束才能被釋放。 |
| ? 更新鎖 U | 用來預定要對此頁施加X鎖,它允許其他事務讀,但是不允許再施加U鎖或X鎖; 當被讀取數據頁將要被更新時,則升級為X鎖; U鎖一直到事務結束時才能被釋放。 |
?
總結
以上是生活随笔為你收集整理的数据库视频总结三(游标和事务)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 数据库视频总结二(Transact-SQ
- 下一篇: 数据库视频总结四(存储过程和触发器)