排程的可循序性(续).ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
排程的可循序性(续)

* SQL的交易支援功能 每個SQL敘述都會被視為是不可分割的單元 (atomic) 在SQL語言中,沒有明確的BEGIN_TRANSACTION陳述。當遇到特定的SQL陳述時,交易開始以隱含的方式執行 不過每個交易必須有明顯的結束陳述,可能是COMMIT或ROLLBACK * SQL交易範例 EXEC SQL whenever sqlerror go to UNDO; ?EXEC SQL SET TRANSACTION READ WRITE DIAGNOSTICS SIZE 5 ISOLATION LEVEL SERIALIZABLE; ?EXEC SQL INSERT INTO EMPLOYEE (FNAME, LNAME, SSN, DNO, SALARY) VALUES (Robert,Smith,991004321,2,35000); EXEC SQL UPDATE EMPLOYEE SET SALARY = SALARY * 1.1 WHERE DNO = 2; EXEC SQL COMMIT; GOTO THE_END; ? UNDO: EXEC SQL ROLLBACK; THE_END: ... * 學習評量 在一個多使用者系統中,何謂資料庫交易的並行執行?請說明為何並行控制是必要的,並舉出一些例子。 請說明資料庫動作read_item和write_item所採取的動作。 請畫出交易在整個執行期間所經歷的典型狀態的狀態圖,並說明之。 請簡要說明資料庫交易的ACID特性。 * 學習評量 以下列的T1、T2、T3 這3個交易與排程S1 與S2 為例。請畫出S1 和S2 的優先順序圖,並說明每個排程是否都是可循序的。假如某排程是可循序的,請寫出與它等價的循序排程 * * 2006/11/08 Source: .tw/Adbms/ * 交易處理的概觀 單一使用者系統:同一時間最多只能有一個使用者使用系統 多使用者系統:同一時間能有多個使用者同時存取資料庫系統 並行性 (Concurrency) 交錯處理 (Interleaved processing):在單一CPU中多個行程交錯執行 平行處理 (Parallel processing):在多個CPU上同時執行多個行程 * 讀寫運算動作 read_item(X) 命令將包含下列步驟: 1. 找到含有資料項X的磁碟區塊的位址 2. 複製此磁碟區塊到主記憶體的某個緩衝區 (假如此磁碟區塊不在主記憶體的緩衝區中) 3. 從緩衝區複製資料項X到程式變數X中 * write_item(X) 命令則包含下列步驟: 1. 從程式變數X複製資料項X到緩衝區中的正確位置上 2. 從緩衝區將更新過的區塊儲存到磁碟上 (立刻或稍後執行) 讀寫運算動作 * * 遺失更新問題 這個問題發生在當存取相同資料項的兩個交易,其動作以交錯的方式執行,使得某資料項的值不正確 暫時更新 (或稱不乾淨的讀取) 問題 這個問題是發生在當某個交易更新了資料項,但交易中途因某種原因而失敗,而在它改變回原來數值之前,已更新的項目被其他交易所存取 Concurrency control * 不正確的總和問題 假設某個交易正在計算數筆記錄的總和,如果此時有另一個交易正好在更新其中一個記錄,那麼計算出來的總和可能是由更新前的某一些數值與更新後其他數值相加而得,因此結果不正確 Concurrency control * 遺失更新問題 r1(x); r2(x); w1(x); r1(y); w2 (x); w1(y) T2 T1 * 暫時更新問題 * 不正確的總和問題 * 導致交易失敗的原因: 1.電腦故障 (系統損毀) 2.交易或系統錯誤 3.本機錯誤或交易偵測到意外狀況 4.強制實施並行控制 5.磁碟故障 6.實體環境問題或災難 回復機制 * 回復管理程式 回復管理程式(recovery manager)會追蹤記錄以下動作: BEGIN_TRANSACTION:指定交易執行的開始 READ或WRITE:指定資料項的讀寫動作,這些動作被視為交易的一部份 END_TRANSACTION:指定交易動作READ或WRITE已經結束,並標示交易執行的結束點,同時檢查結果是否要交付 * 回復管理程式 (續) COMMIT_TRANSACTION:這是代表交易成功結束的信號。此時交易執行所造成的任何改變,都可被安全的交付

文档评论(0)

18273502 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档