第 18 章 交易與鎖定.

Slides:



Advertisements
Similar presentations
教学网站: 数据库及应用 授课教师:岳静 Tel: 教学网站:
Advertisements

第 8 章 還原資料庫.
数据库原理及应用 第10章 事务与锁 10.1 事务 10.2 锁.
数据库原理与SQL Server 第9章 保证数据完整性.
第5章 数据库保护 之事务.
并发控制 讲授者:李川.
An Introduction to Database System
Views ,Stored Procedures, User-defined Function, Triggers
Hadoop 單機設定與啟動 step 1. 設定登入免密碼 step 2. 安裝java step 3. 下載安裝Hadoop
主題五 CPU Learning Lab.
Chapter 5 迴圈.
LINQ 建國科技大學 資管系 饒瑞佶.
PHP與SQL語法存取MySQL SQL
後端教學-MYSQL 講師:邱小楓(邱珈蓉)
9/28號專題報告 Web網頁遊戲 曾建瑋.
解振宇 客户技术经理 客户售前技术部 微软中国有限公司广州办事处
第 3 章 熟悉 SQL Server 的工作平台.
連結資料庫 ACCESS MSSQL.
第 10 章補充 交易與鎖定 (節錄自實習課課本第 20 章).
Q101 在701 SDX Linux上的標準安裝與使用程序v2
第一篇 Unix/Linux 操作介面 第 1 章 Unix/Linux 系統概論 第 2 章 開始使用 Unix/Linux
DataSet.
第二章 Linux基本指令與工具操作 LINUX 按圖施工手冊.
Wireless and Mobile Multimedia Networks
資料庫操作.
課程名稱:資料庫系統 授課老師:李春雄 博士
電腦硬體裝修乙級 第二站-伺服器端系統安裝與環境設定
SQL Stored Procedure SQL 預存程序.
R教學 安裝RStudio 羅琪老師.
第9章 事务.
第 5 章 SQL Server 的安全性管理.
刘红岩 清华大学 管理科学与工程系 第17章 事务管理 刘红岩 清华大学 管理科学与工程系
連結資料庫管理系統.
App Inventor2呼叫PHP存取MySQL
第14章 交易管理與並行控制 14-1 交易的基礎 14-2 資料庫管理系統的交易管理 14-3 並行控制的三種問題
FTP檔案上傳下載 實務與運用.
私立南山高中 信息組 電腦研習 電腦資料的備份 中華民國 99年4月20日 星期二.
Chap3 Linked List 鏈結串列.
DHCP for W2K.
人事差勤系統 網路簽到退 資訊室 黃怡智.
Topic Introduction—RMI
PLC-GPPW軟體使用教學 授課教師:張祖烈
Pocket Access.
雲端計算.
第11章 事务与锁 11.1 事务Transact 11.2 数据并发的问题 11.3 锁Lock 11.4 事务隔离级别.
PHP與MySQL 入門學習指南 凱文瑞克 著 第 22 章 SQL 介紹與建立MySQL資料庫.
WinPXE 無硬碟系統 6.0 安裝說明 憶傑科技股份有限公司
安裝 / 操作 flashget SOP (以Win 7 作業系統為範例)
IIS Internet Information Services
17 交易處理與鎖定 17-1 交易的基礎 17-2 交易處理 17-3 並行控制 17-4 資料鎖定 17-5 死結問題.
期末考.
An Introduction to Database System
GridView操作 (II).
FTP使用教學 簡介: 軟體名稱:FileZilla 軟體性質:Freeware 版本: 繁體中文版
流程控制:Switch-Case 94學年度第一學期‧資訊教育 東海大學物理系.
自停式向下計數器 通訊一甲 B 楊穎穆.
編輯網頁可用那些應用程式? 記事本 Word FrontPage Dreamweaver.
程式移植.
1. 查詢個人電腦版本 1.進入控制台 2.點選“所有控制台項目” 3.點選“系統”.
Chapter 15 檔案存取 LabVIEW中的檔案存取函數也可將程式中的資料儲存成Excel或Word檔。只要將欲存取的檔案路徑位址透過LabVIEW中的路徑元件告訴檔案存取函數後,LabVIEW便可將資料存成Excel或Word檔;當然也可以將Excel或Word檔的資料讀入LabVIEW的程式中。
Commando War ★★☆☆☆ 題組:Problem Set Archive with Online Judge
使用VHDL設計-8x3編碼電路 通訊一甲 B 楊穎穆.
SQL Server 2005交易與鎖定 (節錄自實習課課本第 20 章)
連結資料庫 MYSQL.
多站台網路預約系統之 AJAX即時資料更新機制
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
SQLite資料庫 靜宜大學資管系 楊子青.
Chapter 4 Multi-Threads (多執行緒).
第8章 并发控制 概述 封锁 封锁协议 活锁和死锁 并发调度的可串行性 两段锁协议 封锁的粒度 Oracle的并发控制 2019/11/20
ABAP Basic Concept (2) 運算子 控制式與迴圈 Subroutines Event Block
Presentation transcript:

第 18 章 交易與鎖定

本章重點 18-1 交易簡介 18-2 進行交易的 3 種模式 18-3 巢狀交易與 @@TRANCOUNT 18-4 交易儲存點的設定與回復 18-5 分散式交易 18-6 交易的隔離等級 18-7 資料鎖定 18-8 鎖定的死結問題

18-1 交易簡介

交易簡介

交易簡介

交易簡介 交易通常是由 BEGIN TRAN 敘述開始, 一直執行到 COMMIT TRAN 或 ROLLBACK TRAN 敘述時才結束 (指令中的 TRAN 也可改寫為TRANSACTION, 意義相同)。 當執行完交易中的最後一項資料庫操作後, 若沒有任何錯誤, 我們可用 COMMIT TRAN 表示確認交易。

交易簡介 每執行完一項資料庫的操作後, 要立即檢查@@ERROR 及 @@ROWCOUNT, 否則再執行下一項資料庫操作時, 這二個系統變數將會被新的值取代。 無論是執行 COMMIT TRAN 或 ROLLBACK TRAN 而結束交易後, 如果後面還有其他未執行的敘述, 則還會繼續執行這些敘述, 直到批次結束為止。

交易簡介

交易簡介 SQL Server 自動 ROLLBACK 的時機 ROLLBACK 的原理 交易的 4 大特性

SQL Server 自動 ROLLBACK 的時機 當 SQL Server 因停電、當機、或使用者關機等因素而突然結束時, 那麼在重新啟動時會自動ROLLBACK 所有未確認 (COMMIT) 的交易。 如果在交易途中因網路問題、前端程式當機、使用者登出等因素, 而造成連線中斷, 那麼 SQL Server 也會自動 ROLLBACK 該連線正在進行中但尚未確認 (COMMIT) 的交易。

SQL Server 自動 ROLLBACK 的時機 當交易中發生嚴重錯誤而使交易所屬的批次被中止時, SQL Server 會自動 ROLLBACK 尚未確認(COMMIT) 的相關交易。 如果執行 “SET XACT_ABORT ON” 敘述, 則當有任何執行錯誤 (Runtime error) 發生時, 例如違反某項資料表的條件約束, 就會終止批次並自動回復交易。此選項預設為 OFF。

ROLLBACK 的原理 ROLLBACK 的原理, 其實就是利用一個暫時的交易記錄檔來回復異動資料。在交易開始時, SQL Server 會將要更改的相關資料一一鎖定並進行更改, 同時也會建立一個暫時的交易記錄檔, 來存放交易中更改資料的過程及內容。

交易的 4 大特性 單元性 (Atomicity):整個交易中的敘述會視為一個執行單元, 要就全部成功,不然就全部取消。 一致性 (Consistency) :在交易完成後,資料庫的內容必須全部更新妥當。 隔離性 (Isolation):在交易中所使用到的資料, 必須與其他同時在進行的交易做適度隔離。 永久性 (Durability) :交易一旦確認之後,其所做的資料修改將視為永久性的,無法再用ROLLBACK 回復了。

18-2 進行交易的 3 種模式 外顯交易 (Explicit transactions):以 BEGIN TRAN 來開始交易, 而以 COMMIT TRAN 或 ROLLBACK TRAN 等敘述來結束交易。

進行交易的 3 種模式

進行交易的 3 種模式 自動認可交易 (Autocommit transactions):有許多 SQL 敘述在執行時都會自動進行交易,即稱為自動認可交易。

會影響到資料庫內容的敘述

進行交易的 3 種模式 隱含交易 (Implicit transactions): 當我們執行 “SET IMPLICIT_TRANSACTIONS ON” 敘述後, 只要執行到會影響資料庫內容的敘述 (如上表), 系統即進入隱含交易模式:

18-3 巢狀交易與 @@TRANCOUNT

巢狀交易與 @@TRANCOUNT

巢狀交易與 @@TRANCOUNT

巢狀交易與 @@TRANCOUNT

巢狀交易與 @@TRANCOUNT 交易計數:@@TRANCOUNT

巢狀交易與 @@TRANCOUNT

巢狀交易與 @@TRANCOUNT

18-4 交易儲存點的設定與回復

交易儲存點的設定與回復

18-5 分散式交易

分散式交易

分散式交易 MSDTC 預設並沒有開啟『網路 DTC 存取』的功能, 因此透過網路執行分散式交易時, 可能會顯示"協力電腦異動管理員已經停用了對遠端/網路異動的支援。"

分散式交易

分散式交易

分散式交易 如果有使用防火牆, 那麼還要設定允許 MSDTC 程式通過防火牆。 底下以 Windows 內建的防火牆為例:

分散式交易

分散式交易 使用分散式交易

分散式交易

分散式交易 分散式交易的運作流程 本地 (使用中的) SQL Server 會執行交易中的敘述, 並將對外的查詢或預存程序送至遠端伺服器處理。另外, 也會將相關的遠端伺服器名單送至MSDTC。 當執行到交易中的 COMMIT 或 ROLLBACK 敘述時, 則會將控制權交給 MSDTC 做後續的處理。

分散式交易 如果是要 ROLLBACK, 則 MSDTC 會通知相關伺服器進行 ROLLBACK。若是要 COMMIT, 則會進入『2 階段的確認』(Two-phase commit, 2PC): 準備階段: MSDTC 送出準備確認的訊息給所有參與的伺服器, 然後各伺服器依各自的執行狀況傳回成功或失敗訊息給 MSDTC。 確認階段: 只要 MSDTC 收到了任何一個伺服器傳來的失敗訊息, 便會通知所有的伺服器都進行 ROLLBACK, 並將此訊息通知前端應用程式。

18-6 交易的隔離等級 Read uncommitted:完全沒有隔離效果, 即使要讀取的資料已被其他交易使用且尚未 COMMIT 也沒關係。 Read committed:不允許讀取尚未 COMMIT 的資料, 因此該資料後來被更動的機率就比較小,而且也不會讀取到交易尚未完成的資料。 Repeatable read:在交易中所讀取到的資料將不允許別人更改或刪除, 以保證在交易中每次都可以讀取到相同的內容。

18-6 交易的隔離等級 Snapshot:在交易進行前會先建立資料快照 (Snapshot),而在交易期間所讀取的資料則均來自快照,因此即使實際資料又被別人異動過 (新增/修改/刪除),也不影響該交易中讀取資料的一致性。 Serializable:此等級會將要使用的資料表全部鎖定, 不允許別人來修改、刪除、或新增資料。 40

交易的隔離等級

交易的隔離等級

交易的隔離等級

交易的隔離等級

交易的隔離等級

18-7 資料鎖定 樂觀與悲觀的並行控制 資料鎖定的種類 各類鎖定的共存性

樂觀與悲觀的並行控制 樂觀的並行控制 (Optimistic Concurrency) 悲觀的並行控制 (Pessimistic Concurrency) 當READ_COMMITTED_SNAPSHOT 為OFF 時, Read committed 會使用共用式鎖定(後詳) 的方式, 來確保不會讀到交易未完成的資料 若READ_COMMITTED_SNAPSHOT 設為ON, 此時Read committed 會改用類似快照的方式保存資料, 而不會鎖定資料, 因此算是樂觀的並行控制

資料鎖定的種類 鎖定的對象

資料鎖定的種類 鎖定的方法 獨佔式鎖定 (Exclusive Lock) 共用式鎖定 (Shared Lock) 更新式鎖定 (Update Lock)

資料鎖定的種類 意圖式鎖定

各類鎖定的共存性

18-8 鎖定的死結問題

鎖定的死結問題 避免死結發生的技巧 使用相同的順序來存取資料 儘量縮短交易的時間 儘量使用較低的隔離等級