九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

歡迎來(lái)到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁(yè) 裝配圖網(wǎng) > 資源分類 > PPT文檔下載  

數(shù)據(jù)庫(kù)系統(tǒng)概論 第十一章并發(fā)控制

  • 資源ID:23979529       資源大小:1.29MB        全文頁(yè)數(shù):120頁(yè)
  • 資源格式: PPT        下載積分:14.9積分
快捷下載 游客一鍵下載
會(huì)員登錄下載
微信登錄下載
三方登錄下載: 微信開(kāi)放平臺(tái)登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要14.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫(xiě)的郵箱或者手機(jī)號(hào),方便查詢和重復(fù)下載(系統(tǒng)自動(dòng)生成)
支付方式: 支付寶    微信支付   
驗(yàn)證碼:   換一換

 
賬號(hào):
密碼:
驗(yàn)證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會(huì)被瀏覽器默認(rèn)打開(kāi),此種情況可以點(diǎn)擊瀏覽器菜單,保存網(wǎng)頁(yè)到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請(qǐng)使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無(wú)水印,預(yù)覽文檔經(jīng)過(guò)壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒(méi)有明確說(shuō)明有答案則都視為沒(méi)有答案,請(qǐng)知曉。

數(shù)據(jù)庫(kù)系統(tǒng)概論 第十一章并發(fā)控制

數(shù) 據(jù) 庫(kù) 系 統(tǒng) 概 論An Introduction to Database System第 十 一 章 并 發(fā) 控 制 問(wèn) 題 的 產(chǎn) 生v多 用 戶 數(shù) 據(jù) 庫(kù) 系 統(tǒng) 的 存 在 允 許 多 個(gè) 用 戶 同 時(shí) 使 用 的 數(shù) 據(jù) 庫(kù) 系 統(tǒng)n飛 機(jī) 定 票 數(shù) 據(jù) 庫(kù) 系 統(tǒng)n銀 行 數(shù) 據(jù) 庫(kù) 系 統(tǒng) 特 點(diǎn) : 在 同 一 時(shí) 刻 并 發(fā) 運(yùn) 行 的 事 務(wù) 數(shù) 可 達(dá) 數(shù) 百 個(gè) 問(wèn) 題 的 產(chǎn) 生 ( 續(xù) )v不 同 的 多 事 務(wù) 執(zhí) 行 方 式 (1)事 務(wù) 串 行 執(zhí) 行 每 個(gè) 時(shí) 刻 只 有 一 個(gè) 事 務(wù) 運(yùn) 行 , 其 他 事 務(wù)必 須 等 到 這 個(gè) 事 務(wù) 結(jié) 束 以 后 方 能 運(yùn) 行 不 能 充 分 利 用 系 統(tǒng) 資 源 , 發(fā) 揮 數(shù) 據(jù) 庫(kù) 共享 資 源 的 特 點(diǎn) T1T2T3 事 務(wù) 的 串 行 執(zhí) 行 方 式 問(wèn) 題 的 產(chǎn) 生 ( 續(xù) )(2)交 叉 并 發(fā) 方 式 ( Interleaved Concurrency) 在 單 處 理 機(jī) 系 統(tǒng) 中 , 事 務(wù) 的 并 行 執(zhí) 行 是 這 些 并 行 事 務(wù)的 并 行 操 作 輪 流 交 叉 運(yùn) 行 單 處 理 機(jī) 系 統(tǒng) 中 的 并 行 事 務(wù) 并 沒(méi) 有 真 正 地 并 行 運(yùn) 行 ,但 能 夠 減 少 處 理 機(jī) 的 空 閑 時(shí) 間 , 提 高 系 統(tǒng) 的 效 率 問(wèn) 題 的 產(chǎn) 生 ( 續(xù) ) 事 務(wù) 的 交 叉 并 發(fā) 執(zhí) 行 方 式 問(wèn) 題 的 產(chǎn) 生 ( 續(xù) ) (3)同 時(shí) 并 發(fā) 方 式 ( simultaneous concurrency) 多 處 理 機(jī) 系 統(tǒng) 中 , 每 個(gè) 處 理 機(jī) 可 以 運(yùn) 行 一 個(gè) 事 務(wù) ,多 個(gè) 處 理 機(jī) 可 以 同 時(shí) 運(yùn) 行 多 個(gè) 事 務(wù) , 實(shí) 現(xiàn) 多 個(gè) 事 務(wù)真 正 的 并 行 運(yùn) 行 問(wèn) 題 的 產(chǎn) 生 ( 續(xù) )v事 務(wù) 并 發(fā) 執(zhí) 行 帶 來(lái) 的 問(wèn) 題 會(huì) 產(chǎn) 生 多 個(gè) 事 務(wù) 同 時(shí) 存 取 同 一 數(shù) 據(jù) 的 情 況 可 能 會(huì) 存 取 和 存 儲(chǔ) 不 正 確 的 數(shù) 據(jù) , 破 壞 事 務(wù) 一 致 性和 數(shù) 據(jù) 庫(kù) 的 一 致 性vDBMS必 須 提 供 并 發(fā) 控 制 機(jī) 制v并 發(fā) 控 制 機(jī) 制 是 衡 量 一 個(gè) DBMS性 能 的 重 要 標(biāo) 志之 一 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 11.1 并 發(fā) 控 制 概 述v并 發(fā) 控 制 機(jī) 制 的 任 務(wù) 對(duì) 并 發(fā) 操 作 進(jìn) 行 正 確 調(diào) 度 保 證 事 務(wù) 的 隔 離 性 保 證 數(shù) 據(jù) 庫(kù) 的 一 致 性 T1的 修 改 被 T2覆 蓋 了 !并 發(fā) 控 制 概 述 ( 續(xù) )并 發(fā) 操 作 帶 來(lái) 數(shù) 據(jù) 的 不 一 致 性 實(shí) 例例 1飛 機(jī) 訂 票 系 統(tǒng) 中 的 一 個(gè) 活 動(dòng) 序 列 甲 售 票 點(diǎn) (甲 事 務(wù) )讀 出 某 航 班 的 機(jī) 票 余 額 A, 設(shè) A=16; 乙 售 票 點(diǎn) (乙 事 務(wù) )讀 出 同 一 航 班 的 機(jī) 票 余 額 A, 也 為 16; 甲 售 票 點(diǎn) 賣(mài) 出 一 張 機(jī) 票 , 修 改 余 額 AA-1, 所 以 A為 15, 把 A寫(xiě) 回?cái)?shù) 據(jù) 庫(kù) ; 乙 售 票 點(diǎn) 賣(mài) 出 三 張 機(jī) 票 , 修 改 余 額 AA-1, 所 以 A為 15, 把 A寫(xiě) 回?cái)?shù) 據(jù) 庫(kù) n 結(jié) 果 明 明 賣(mài) 出 兩 張 機(jī) 票 , 數(shù) 據(jù) 庫(kù) 中 機(jī) 票 余 額 只 減 少 1 并 發(fā) 控 制 概 述 ( 續(xù) )v這 種 情 況 稱 為 數(shù) 據(jù) 庫(kù) 的 不 一 致 性 , 是 由 并 發(fā) 操 作 引 起的 。v在 并 發(fā) 操 作 情 況 下 , 對(duì) 甲 、 乙 兩 個(gè) 事 務(wù) 的 操 作 序 列 的調(diào) 度 是 隨 機(jī) 的 。v若 按 上 面 的 調(diào) 度 序 列 執(zhí) 行 , 甲 事 務(wù) 的 修 改 就 被 丟 失 。 原 因 : 第 4步 中 乙 事 務(wù) 修 改 A并 寫(xiě) 回 后 覆 蓋 了 甲 事 務(wù)的 修 改 并 發(fā) 控 制 概 述 ( 續(xù) )v并 發(fā) 操 作 帶 來(lái) 的 數(shù) 據(jù) 不 一 致 性 丟 失 修 改 ( Lost Update) 不 可 重 復(fù) 讀 ( Non-repeatable Read) 讀 “ 臟 ” 數(shù) 據(jù) ( Dirty Read)v記 號(hào) R(x):讀 數(shù) 據(jù) x W(x):寫(xiě) 數(shù) 據(jù) x 1. 丟 失 修 改v丟 失 修 改 是 指 兩 個(gè) 事 務(wù) T1和 T2從 數(shù) 據(jù) 庫(kù) 中 讀 入 同一 數(shù) 據(jù) 并 修 改 , 事 務(wù) T2的 提 交 結(jié) 果 破 壞 了 事 務(wù) T1提 交 的 結(jié) 果 , 導(dǎo) 致 T1的 修 改 被 丟 失 。v上 面 飛 機(jī) 訂 票 例 子 就 屬 此 類 丟 失 修 改 ( 續(xù) )T1 T2 R(A)=16 R(A)=16 AA-1 W(A)=15 AA-3W(A)=13 丟 失 修 改T1的 修 改 被 T2覆 蓋 了 ! 2. 不 可 重 復(fù) 讀v不 可 重 復(fù) 讀 是 指 事 務(wù) T1讀 取 數(shù) 據(jù) 后 , 事 務(wù) T2 執(zhí) 行 更 新 操 作 , 使 T1無(wú) 法 再 現(xiàn) 前 一 次 讀 取 結(jié) 果 。 不 可 重 復(fù) 讀 ( 續(xù) )v事 務(wù) 1讀 取 某 一 數(shù) 據(jù) 后 :v1。 事 務(wù) 2對(duì) 其 做 了 修 改 , 當(dāng) 事 務(wù) 1再 次 讀 該 數(shù) 據(jù)時(shí) , 得 到 與 前 一 次 不 同 的 值 。v2. 事 務(wù) 2刪 除 了 其 中 部 分 記 錄 , 當(dāng) 事 務(wù) 1再 次 讀 取數(shù) 據(jù) 時(shí) , 發(fā) 現(xiàn) 某 些 記 錄 神 密 地 消 失 了 。v3. 事 務(wù) 2插 入 了 一 些 記 錄 , 當(dāng) 事 務(wù) 1再 次 按 相 同 條件 讀 取 數(shù) 據(jù) 時(shí) , 發(fā) 現(xiàn) 多 了 一 些 記 錄 。后 兩 種 不 可 重 復(fù) 讀 有 時(shí) 也 稱 為 幻 影 現(xiàn) 象 ( phantom row) 不 可 重 復(fù) 讀 ( 續(xù) )n T1讀 取 B=100進(jìn) 行 運(yùn) 算n T2讀 取 同 一 數(shù) 據(jù) B, 對(duì) 其 進(jìn)行 修 改 后 將 B=200寫(xiě) 回 數(shù) 據(jù)庫(kù) 。n T1為 了 對(duì) 讀 取 值 校 對(duì) 重 讀 B,B已 為 200, 與 第 一 次 讀 取 值不 一 致 T1 T2 R(A)=50 R(B)=100求 和 =150 R(B)=100BB*2(B)=200 R(A)=50R(B)=200 和 =250(驗(yàn) 算 不 對(duì) )不 可 重 復(fù) 讀 例 如 : 3. 讀 “ 臟 ” 數(shù) 據(jù) 讀 “ 臟 ” 數(shù) 據(jù) 是 指 :n事 務(wù) T1修 改 某 一 數(shù) 據(jù) , 并 將 其 寫(xiě) 回 磁 盤(pán)n事 務(wù) T2讀 取 同 一 數(shù) 據(jù) 后 , T1由 于 某 種 原 因 被 撤 銷n這 時(shí) T1已 修 改 過(guò) 的 數(shù) 據(jù) 恢 復(fù) 原 值 , T2讀 到 的 數(shù) 據(jù) 就 與數(shù) 據(jù) 庫(kù) 中 的 數(shù) 據(jù) 不 一 致nT2讀 到 的 數(shù) 據(jù) 就 為 “ 臟 ” 數(shù) 據(jù) , 即 不 正 確 的 數(shù) 據(jù) 讀 “ 臟 ” 數(shù) 據(jù) ( 續(xù) )T1 T2 R(C)=100 CC*2 W(C)=200 R(C)=200 ROLLBACK C恢 復(fù) 為 100例 如 讀 “ 臟 ” 數(shù) 據(jù) n T1將 C值 修 改 為 200,T2讀 到 C為 200n T1由 于 某 種 原 因 撤銷 , 其 修 改 作 廢 , C恢 復(fù) 原 值 100n 這 時(shí) T2讀 到 的 C為200, 與 數(shù) 據(jù) 庫(kù) 內(nèi) 容不 一 致 , 就 是 “ 臟 ”數(shù) 據(jù) 并 發(fā) 控 制 概 述 ( 續(xù) )v數(shù) 據(jù) 不 一 致 性 : 由 于 并 發(fā) 操 作 破 壞 了 事 務(wù) 的 隔 離 性v并 發(fā) 控 制 就 是 要 用 正 確 的 方 式 調(diào) 度 并 發(fā) 操 作 , 使 一個(gè) 用 戶 事 務(wù) 的 執(zhí) 行 不 受 其 他 事 務(wù) 的 干 擾 , 從 而 避 免造 成 數(shù) 據(jù) 的 不 一 致 性 并 發(fā) 控 制 概 述 ( 續(xù) )v并 發(fā) 控 制 的 主 要 技 術(shù) 有 封 鎖 (Locking) 時(shí) 間 戳 (Timestamp) 樂(lè) 觀 控 制 法v商 用 的 DBMS一 般 都 采 用 封 鎖 方 法 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 11.2 封 鎖v什 么 是 封 鎖v基 本 封 鎖 類 型v鎖 的 相 容 矩 陣 什 么 是 封 鎖v封 鎖 就 是 事 務(wù) T在 對(duì) 某 個(gè) 數(shù) 據(jù) 對(duì) 象 ( 例 如 表 、 記 錄等 ) 操 作 之 前 , 先 向 系 統(tǒng) 發(fā) 出 請(qǐng) 求 , 對(duì) 其 加 鎖v加 鎖 后 事 務(wù) T就 對(duì) 該 數(shù) 據(jù) 對(duì) 象 有 了 一 定 的 控 制 , 在事 務(wù) T釋 放 它 的 鎖 之 前 , 其 它 的 事 務(wù) 不 能 更 新 此 數(shù)據(jù) 對(duì) 象 。 基 本 封 鎖 類 型v一 個(gè) 事 務(wù) 對(duì) 某 個(gè) 數(shù) 據(jù) 對(duì) 象 加 鎖 后 究 竟 擁 有 什 么 樣的 控 制 由 封 鎖 的 類 型 決 定 。v基 本 封 鎖 類 型 排 它 鎖 ( Exclusive Locks, 簡(jiǎn) 記 為 X鎖 ) 共 享 鎖 ( Share Locks, 簡(jiǎn) 記 為 S鎖 ) 排 它 鎖v排 它 鎖 又 稱 為 寫(xiě) 鎖v若 事 務(wù) T對(duì) 數(shù) 據(jù) 對(duì) 象 A加 上 X鎖 , 則 只 允 許 T讀 取 和修 改 A, 其 它 任 何 事 務(wù) 都 不 能 再 對(duì) A加 任 何 類 型 的鎖 , 直 到 T釋 放 A上 的 鎖v保 證 其 他 事 務(wù) 在 T釋 放 A上 的 鎖 之 前 不 能 再 讀 取 和修 改 A 共 享 鎖v共 享 鎖 又 稱 為 讀 鎖v若 事 務(wù) T對(duì) 數(shù) 據(jù) 對(duì) 象 A加 上 S鎖 , 則 其 它 事 務(wù) 只 能再 對(duì) A加 S鎖 , 而 不 能 加 X鎖 , 直 到 T釋 放 A上 的 S鎖v保 證 其 他 事 務(wù) 可 以 讀 A, 但 在 T釋 放 A上 的 S鎖 之 前不 能 對(duì) A做 任 何 修 改 鎖 的 相 容 矩 陣Y=Yes, 相 容 的 請(qǐng) 求N=No, 不 相 容 的 請(qǐng) 求 T2 T1 X S -X N N YS N Y Y- Y Y Y 鎖 的 相 容 矩 陣 ( 續(xù) )在 鎖 的 相 容 矩 陣 中 :v最 左 邊 一 列 表 示 事 務(wù) T1已 經(jīng) 獲 得 的 數(shù) 據(jù) 對(duì) 象 上 的 鎖 的 類 型 ,其 中 橫 線 表 示 沒(méi) 有 加 鎖 。v最 上 面 一 行 表 示 另 一 事 務(wù) T2對(duì) 同 一 數(shù) 據(jù) 對(duì) 象 發(fā) 出 的 封 鎖 請(qǐng)求 。vT2的 封 鎖 請(qǐng) 求 能 否 被 滿 足 用 矩 陣 中 的 Y和 N表 示 Y表 示 事 務(wù) T2的 封 鎖 要 求 與 T1已 持 有 的 鎖 相 容 , 封 鎖 請(qǐng) 求 可以 滿 足 N表 示 T2的 封 鎖 請(qǐng) 求 與 T1已 持 有 的 鎖 沖 突 , T2的 請(qǐng) 求 被 拒絕 續(xù) : 封 鎖 協(xié) 議v在 運(yùn) 用 X鎖 和 S鎖 對(duì) 數(shù) 據(jù) 對(duì) 象 加 鎖 時(shí) , 需 要 約 定 一 些 規(guī) 則 :封 鎖 協(xié) 議 ( Locking Protocol) 何 時(shí) 申 請(qǐng) X鎖 或 S鎖 持 鎖 時(shí) 間 、 何 時(shí) 釋 放v 不 同 的 封 鎖 協(xié) 議 , 在 不 同 的 程 度 上 為 并 發(fā) 操 作 的 正 確 調(diào) 度 提 供 一 定 的 保 證v常 用 的 封 鎖 協(xié) 議 : 三 級(jí) 封 鎖 協(xié) 議 1級(jí) 封 鎖 協(xié) 議v事 務(wù) T在 修 改 數(shù) 據(jù) R之 前 必 須 先 對(duì) 其 加 X鎖 , 直 到事 務(wù) 結(jié) 束 才 釋 放 正 常 結(jié) 束 ( COMMIT) 非 正 常 結(jié) 束 ( ROLLBACK)v1級(jí) 封 鎖 協(xié) 議 可 防 止 丟 失 修 改v在 1級(jí) 封 鎖 協(xié) 議 中 , 如 果 是 讀 數(shù) 據(jù) , 不 需 要 加 鎖 的 , 所 以它 不 能 保 證 可 重 復(fù) 讀 和 不 讀 “ 臟 ” 數(shù) 據(jù) 。 1級(jí) 封 鎖 協(xié) 議T1 T2 Xlock A 獲 得 讀 A=16 AA-1 寫(xiě) 回 A=15 Commit Unlock A Xlock A等 待等 待等 待等 待獲 得 Xlock A讀 A=15AA-1寫(xiě) 回 A=14CommitUnlock A 沒(méi) 有 丟 失 修 改 n 事 務(wù) T1在 讀 A進(jìn) 行 修 改之 前 先 對(duì) A加 X鎖n 當(dāng) T2再 請(qǐng) 求 對(duì) A加 X鎖 時(shí)被 拒 絕n T2只 能 等 待 T1釋 放 A上的 鎖 后 T2獲 得 對(duì) A的 X鎖n 這 時(shí) T2讀 到 的 A已 經(jīng) 是T1更 新 過(guò) 的 值 15n T2按 此 新 的 A值 進(jìn) 行 運(yùn)算 , 并 將 結(jié) 果 值 A=14送回 到 磁 盤(pán) 。 避 免 了 丟 失T1的 更 新 。 1級(jí) 封 鎖 協(xié) 議 讀 A=15 Xlock A 獲 得 讀 A=16 AA-1 寫(xiě) 回 A=15 Rollback Unlock A T2T1 讀 “ 臟 ” 數(shù) 據(jù) 1級(jí) 封 鎖 協(xié) 議 Xlock B 獲 得 讀 B=100 BB*2 寫(xiě) 回 B=200 Commit Unlock B 讀 A=50 讀 B=100 求 和 =150 讀 A=50 讀 B=200 求 和 =250 (驗(yàn) 算 不 對(duì) ) T2T1 不 可 重 復(fù) 讀 2級(jí) 封 鎖 協(xié) 議v1級(jí) 封 鎖 協(xié) 議 +事 務(wù) T在 讀 取 數(shù) 據(jù) R前 必 須 先 加 S鎖 ,讀 完 后 即 可 釋 放 S鎖v2級(jí) 封 鎖 協(xié) 議 可 以 防 止 丟 失 修 改 和 讀 “ 臟 ” 數(shù) 據(jù) 。v在 2級(jí) 封 鎖 協(xié) 議 中 , 由 于 讀 完 數(shù) 據(jù) 后 即 可 釋 放 S鎖 ,所 以 它 不 能 保 證 可 重 復(fù) 讀 。 2級(jí) 封 鎖 協(xié) 議不 可 重 復(fù) 讀 Sclock A 獲 得 讀 A=50 Unlock A Sclock B 獲 得 讀 B=100 Unlock B 求 和 =150 Xlock B等 待等 待獲 得 Xlock B讀 B=100BB*2 寫(xiě) 回 B=200CommitUnlock BT2T1 Sclock A 獲 得 讀 A=50 Unlock A Sclock B 獲 得 讀 B=200 Unlock B 求 和 =250 (驗(yàn) 算 不 對(duì) ) T2T1 (續(xù) ) 3級(jí) 封 鎖 協(xié) 議v1級(jí) 封 鎖 協(xié) 議 + 事 務(wù) T在 讀 取 數(shù) 據(jù) R之 前 必 須 先 對(duì)其 加 S鎖 , 直 到 事 務(wù) 結(jié) 束 才 釋 放v3級(jí) 封 鎖 協(xié) 議 可 防 止 丟 失 修 改 、 讀 臟 數(shù) 據(jù) 和 不 可 重 復(fù) 讀 。 3級(jí) 封 鎖 協(xié) 議T1 T2 Slock A 讀 A=50 Slock B 讀 B=100 求 和 =150 讀 A=50 讀 B=100 求 和 =150 Commit Unlock A Unlock B Xlock B等 待等 待等 待 等 待等 待等 待等 待等 待獲 得 Xlock B讀 B=100BB*2寫(xiě) 回 B=200CommitUnlock B 可 重 復(fù) 讀 n 事 務(wù) T1在 讀 A, B之 前 , 先 對(duì) A,B加 S鎖n 其 他 事 務(wù) 只 能 再 對(duì) A, B加 S鎖 ,而 不 能 加 X鎖 , 即 其 他 事 務(wù) 只 能讀 A, B, 而 不 能 修 改n 當(dāng) T2為 修 改 B而 申 請(qǐng) 對(duì) B的 X鎖 時(shí)被 拒 絕 只 能 等 待 T1釋 放 B上 的 鎖n T1為 驗(yàn) 算 再 讀 A, B, 這 時(shí) 讀 出 的B仍 是 100, 求 和 結(jié) 果 仍 為 150, 即可 重 復(fù) 讀n T1結(jié) 束 才 釋 放 A, B上 的 S鎖 。 T2才 獲 得 對(duì) B的 X鎖 3級(jí) 封 鎖 協(xié) 議T1 T2 Xlock C 讀 C= 100 CC*2 寫(xiě) 回 C=200 ROLLBACK (C恢 復(fù) 為 100) Unlock C Slock C等 待等 待等 待等 待獲 得 Slock C讀 C=100Commit CUnlock C 不 讀 “ 臟 ” 數(shù) 據(jù) n 事 務(wù) T1在 對(duì) C進(jìn) 行 修 改 之 前 , 先對(duì) C加 X鎖 , 修 改 其 值 后 寫(xiě) 回 磁 盤(pán)n T2請(qǐng) 求 在 C上 加 S鎖 , 因 T1已 在 C上 加 了 X鎖 , T2只 能 等 待n T1因 某 種 原 因 被 撤 銷 , C恢 復(fù) 為原 值 100n T1釋 放 C上 的 X鎖 后 T2獲 得 C上 的S鎖 , 讀 C=100。 避 免 了 T2讀“ 臟 ” 數(shù) 據(jù) 4 封 鎖 協(xié) 議 小 結(jié)v三 級(jí) 協(xié) 議 的 主 要 區(qū) 別 什 么 操 作 需 要 申 請(qǐng) 封 鎖 何 時(shí) 釋 放 鎖 ( 即 持 鎖 時(shí) 間 ) 封 鎖 協(xié) 議 小 結(jié) (續(xù) ) 使 用 封 鎖 機(jī) 制 解 決 讀 “ 臟 ” 數(shù) 據(jù) 問(wèn)題T1 T2 Xlock CR(C)=100CC*2W(C)=200 Slock C等 待 ROLLBACK 等 待 (C恢 復(fù) 為 100) 等 待Unlock C 等 待 獲 得 Slock CR(C)=100 Commit CUnlock C例 n 事 務(wù) T1在 對(duì) C進(jìn) 行 修 改 之 前 , 先對(duì) C加 X鎖 , 修 改 其 值 后 寫(xiě) 回 磁 盤(pán)n T2請(qǐng) 求 在 C上 加 S鎖 , 因 T1已 在 C上 加 了 X鎖 , T2只 能 等 待n T1因 某 種 原 因 被 撤 銷 , C恢 復(fù) 為原 值 100n T1釋 放 C上 的 X鎖 后 T2獲 得 C上 的S鎖 , 讀 C=100。 避 免 了 T2讀“ 臟 ” 數(shù) 據(jù)不 讀 “ 臟 ” 數(shù) 據(jù) 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 11.3 活 鎖 和 死 鎖v封 鎖 技 術(shù) 可 以 有 效 地 解 決 并 行 操 作 的 一 致 性 問(wèn) 題 ,但 也 帶 來(lái) 一 些 新 的 問(wèn) 題 死 鎖 活 鎖 11.3.1 活 鎖v事 務(wù) T1封 鎖 了 數(shù) 據(jù) Rv事 務(wù) T2又 請(qǐng) 求 封 鎖 R, 于 是 T2等 待 。vT3也 請(qǐng) 求 封 鎖 R, 當(dāng) T1釋 放 了 R上 的 封 鎖 之 后 系 統(tǒng) 首 先 批準(zhǔn) 了 T3的 請(qǐng) 求 , T2仍 然 等 待 。vT4又 請(qǐng) 求 封 鎖 R, 當(dāng) T3釋 放 了 R上 的 封 鎖 之 后 系 統(tǒng) 又 批 準(zhǔn)了 T4的 請(qǐng) 求 vT2有 可 能 永 遠(yuǎn) 等 待 , 這 就 是 活 鎖 的 情 形 活 鎖 ( 續(xù) ) 活 鎖 如 何 避 免 活 鎖 ( 續(xù) )v采 用 先 來(lái) 先 服 務(wù) 的 策 略當(dāng) 多 個(gè) 事 務(wù) 請(qǐng) 求 封 鎖 同 一 數(shù) 據(jù) 對(duì) 象 時(shí) 按 請(qǐng) 求 封 鎖 的 先 后 次 序 對(duì) 這 些 事 務(wù) 排 隊(duì) 該 數(shù) 據(jù) 對(duì) 象 上 的 鎖 一 旦 釋 放 , 首 先 批 準(zhǔn) 申 請(qǐng) 隊(duì) 列 中 第一 個(gè) 事 務(wù) 獲 得 鎖 11.3.2 死 鎖v事 務(wù) T1封 鎖 了 數(shù) 據(jù) R1vT2封 鎖 了 數(shù) 據(jù) R2vT1又 請(qǐng) 求 封 鎖 R2, 因 T2已 封 鎖 了 R2, 于 是 T1等 待 T2釋 放R2上 的 鎖v接 著 T2又 申 請(qǐng) 封 鎖 R1, 因 T1已 封 鎖 了 R1, T2也 只 能 等 待T1釋 放 R1上 的 鎖v這 樣 T1在 等 待 T2, 而 T2又 在 等 待 T1, T1和 T2兩 個(gè) 事 務(wù) 永遠(yuǎn) 不 能 結(jié) 束 , 形 成 死 鎖 死 鎖 ( 續(xù) )T1 T2lock R1 Lock R2 Lock R2. 等 待 等 待 Lock R 1等 待 等 待等 待 等 待死 鎖 解 決 死 鎖 的 方 法兩 類 方 法1. 預(yù) 防 死 鎖2. 死 鎖 的 診 斷 與 解 除 1. 死 鎖 的 預(yù) 防v產(chǎn) 生 死 鎖 的 原 因 是 兩 個(gè) 或 多 個(gè) 事 務(wù) 都 已 封 鎖 了 一 些 數(shù) 據(jù) 對(duì)象 , 然 后 又 都 請(qǐng) 求 對(duì) 已 為 其 他 事 務(wù) 封 鎖 的 數(shù) 據(jù) 對(duì) 象 加 鎖 ,從 而 出 現(xiàn) 死 等 待 。v預(yù) 防 死 鎖 的 發(fā) 生 就 是 要 破 壞 產(chǎn) 生 死 鎖 的 條 件 死 鎖 的 預(yù) 防 ( 續(xù) )預(yù) 防 死 鎖 的 方 法v 一 次 封 鎖 法v 順 序 封 鎖 法 (1)一 次 封 鎖 法v要 求 每 個(gè) 事 務(wù) 必 須 一 次 將 所 有 要 使 用 的 數(shù) 據(jù) 全部 加 鎖 , 否 則 就 不 能 繼 續(xù) 執(zhí) 行v存 在 的 問(wèn) 題 降 低 系 統(tǒng) 并 發(fā) 度 擴(kuò) 大 封 鎖 范 圍 將 以 后 要 用 到 的 全 部 數(shù) 據(jù) 加 鎖 , 勢(shì) 必 擴(kuò) 大 了封 鎖 的 范 圍 , 從 而 降 低 了 系 統(tǒng) 的 并 發(fā) 度 (1)一 次 封 鎖 法v難 于 事 先 精 確 確 定 封 鎖 對(duì) 象 數(shù) 據(jù) 庫(kù) 中 數(shù) 據(jù) 是 不 斷 變 化 的 , 原 來(lái) 不 要 求 封 鎖 的 數(shù) 據(jù) ,在 執(zhí) 行 過(guò) 程 中 可 能 會(huì) 變 成 封 鎖 對(duì) 象 , 所 以 很 難 事 先 精確 地 確 定 每 個(gè) 事 務(wù) 所 要 封 鎖 的 數(shù) 據(jù) 對(duì) 象 解 決 方 法 : 將 事 務(wù) 在 執(zhí) 行 過(guò) 程 中 可 能 要 封 鎖 的 數(shù) 據(jù) 對(duì)象 全 部 加 鎖 , 這 就 進(jìn) 一 步 降 低 了 并 發(fā) 度 。 (2)順 序 封 鎖 法v順 序 封 鎖 法 是 預(yù) 先 對(duì) 數(shù) 據(jù) 對(duì) 象 規(guī) 定 一 個(gè) 封 鎖 順 序 ,所 有 事 務(wù) 都 按 這 個(gè) 順 序 實(shí) 行 封 鎖 。v順 序 封 鎖 法 存 在 的 問(wèn) 題 維 護(hù) 成 本 數(shù) 據(jù) 庫(kù) 系 統(tǒng) 中 可 封 鎖 的 數(shù) 據(jù) 對(duì) 象 極 其 眾 多 , 并且 隨 數(shù) 據(jù) 的 插 入 、 刪 除 等 操 作 而 不 斷 地 變 化 ,要 維 護(hù) 這 樣 極 多 而 且 變 化 的 資 源 的 封 鎖 順 序 非常 困 難 , 成 本 很 高 (2)順 序 封 鎖 法 難 于 實(shí) 現(xiàn) 事 務(wù) 的 封 鎖 請(qǐng) 求 可 以 隨 著 事 務(wù) 的 執(zhí) 行 而 動(dòng) 態(tài) 地決 定 , 很 難 事 先 確 定 每 一 個(gè) 事 務(wù) 要 封 鎖 哪 些 對(duì)象 , 因 此 也 就 很 難 按 規(guī) 定 的 順 序 去 施 加 封 鎖 。 例 : 規(guī) 定 數(shù) 據(jù) 對(duì) 象 的 封 鎖 順 序 為 A,B,C,D,E。事 務(wù) T3起 初 要 求 封 鎖 數(shù) 據(jù) 對(duì) 象 B,C,E, 但 當(dāng) 它封 鎖 了 B,C后 , 才 發(fā) 現(xiàn) 還 需 要 封 鎖 A, 這 樣 就 破壞 了 封 鎖 順 序 . 死 鎖 的 預(yù) 防 ( 續(xù) )v結(jié) 論 在 操 作 系 統(tǒng) 中 廣 為 采 用 的 預(yù) 防 死 鎖 的 策 略 并 不 很 適 合數(shù) 據(jù) 庫(kù) 的 特 點(diǎn) DBMS在 解 決 死 鎖 的 問(wèn) 題 上 更 普 遍 采 用 的 是 診 斷 并 解 除死 鎖 的 方 法 死 鎖 的 預(yù) 防 ( 續(xù) )v允 許 死 鎖 發(fā) 生v解 除 死 鎖 由 DBMS的 并 發(fā) 控 制 子 系 統(tǒng) 定 期 檢 測(cè) 系 統(tǒng) 中 是 否 存在 死 鎖 一 旦 檢 測(cè) 到 死 鎖 , 就 要 設(shè) 法 解 除 2. 死 鎖 的 診 斷 與 解 除v死 鎖 的 診 斷n超 時(shí) 法n事 務(wù) 等 待 圖 法 (1) 超 時(shí) 法v如 果 一 個(gè) 事 務(wù) 的 等 待 時(shí) 間 超 過(guò) 了 規(guī) 定 的 時(shí) 限 , 就 認(rèn) 為發(fā) 生 了 死 鎖v優(yōu) 點(diǎn) : 實(shí) 現(xiàn) 簡(jiǎn) 單v缺 點(diǎn) 有 可 能 誤 判 死 鎖 時(shí) 限 若 設(shè) 置 得 太 長(zhǎng) , 死 鎖 發(fā) 生 后 不 能 及 時(shí) 發(fā) 現(xiàn) (2)等 待 圖 法v用 事 務(wù) 等 待 圖 動(dòng) 態(tài) 反 映 所 有 事 務(wù) 的 等 待 情 況 事 務(wù) 等 待 圖 是 一 個(gè) 有 向 圖 G=(T, U) T為 結(jié) 點(diǎn) 的 集 合 , 每 個(gè) 結(jié) 點(diǎn) 表 示 正 運(yùn) 行 的 事 務(wù) U為 邊 的 集 合 , 每 條 邊 表 示 事 務(wù) 等 待 的 情 況 若 T 1等 待 T2, 則 T1, T2之 間 劃 一 條 有 向 邊 , 從 T1指 向 T2 等 待 圖 法 ( 續(xù) ) 事 務(wù) 等 待 圖n 圖 (a)中 , 事 務(wù) T1等 待 T2, T2等 待 T1, 產(chǎn) 生 了 死 鎖n 圖 (b)中 , 事 務(wù) T1等 待 T2, T2等 待 T3, T3等 待 T4, T4又 等 待T1, 產(chǎn) 生 了 死 鎖 n 圖 (b)中 , 事 務(wù) T3可 能 還 等 待 T2, 在 大 回 路 中 又 有 小 的 回 路 等 待 圖 法 ( 續(xù) )v并 發(fā) 控 制 子 系 統(tǒng) 周 期 性 地 ( 比 如 每 隔 數(shù) 秒 ) 生 成事 務(wù) 等 待 圖 , 檢 測(cè) 事 務(wù) 。 如 果 發(fā) 現(xiàn) 圖 中 存 在 回 路 ,則 表 示 系 統(tǒng) 中 出 現(xiàn) 了 死 鎖 。 死 鎖 的 診 斷 與 解 除 ( 續(xù) )v解 除 死 鎖 選 擇 一 個(gè) 處 理 死 鎖 代 價(jià) 最 小 的 事 務(wù) , 將 其 撤 消 釋 放 此 事 務(wù) 持 有 的 所 有 的 鎖 , 使 其 它 事 務(wù) 能 繼續(xù) 運(yùn) 行 下 去 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 11.4 并 發(fā) 調(diào) 度 的 可 串 行 性vDBMS對(duì) 并 發(fā) 事 務(wù) 不 同 的 調(diào) 度 可 能 會(huì) 產(chǎn) 生 不 同 的結(jié) 果一 、 什 么 樣 的 并 發(fā) 操 作 調(diào) 度 是 正 確 的二 、 如 何 保 證 并 發(fā) 操 作 的 調(diào) 度 是 正 確 的 一 、 什 么 樣 的 并 發(fā) 操 作 調(diào) 度 是 正 確 的v計(jì) 算 機(jī) 系 統(tǒng) 對(duì) 并 行 事 務(wù) 中 并 行 操 作 的 調(diào) 度 是 的隨 機(jī) 的 , 而 不 同 的 調(diào) 度 可 能 會(huì) 產(chǎn) 生 不 同 的 結(jié) 果 。v將 所 有 事 務(wù) 串 行 起 來(lái) 的 調(diào) 度 策 略 一 定 是 正 確 的調(diào) 度 策 略 。 如 果 一 個(gè) 事 務(wù) 運(yùn) 行 過(guò) 程 中 沒(méi) 有 其 他 事 務(wù) 在 同 時(shí) 運(yùn) 行 ,也 就 是 說(shuō) 它 沒(méi) 有 受 到 其 他 事 務(wù) 的 干 擾 , 那 么 就 可 以認(rèn) 為 該 事 務(wù) 的 運(yùn) 行 結(jié) 果 是 正 常 的 或 者 預(yù) 想 的 一 、 什 么 樣 的 并 發(fā) 操 作 調(diào) 度 是 正 確 的v以 不 同 的 順 序 串 行 執(zhí) 行 事 務(wù) 也 有 可 能 會(huì) 產(chǎn)生 不 同 的 結(jié) 果 , 但 由 于 不 會(huì) 將 數(shù) 據(jù) 庫(kù) 置 于不 一 致 狀 態(tài) , 所 以 都 可 以 認(rèn) 為 是 正 確 的 。v 幾 個(gè) 事 務(wù) 的 并 行 執(zhí) 行 是 正 確 的 , 當(dāng) 且 僅 當(dāng)其 結(jié) 果 與 按 某 一 次 序 串 行 地 執(zhí) 行 它 們 時(shí) 的結(jié) 果 相 同 。 這 種 并 行 調(diào) 度 策 略 稱 為 可 串 行化 ( Serializable) 的 調(diào) 度 。 11.4.1 可 串 行 化 調(diào) 度v可 串 行 性 是 并 行 事 務(wù) 正 確 性 的 唯 一 準(zhǔn) 則v可 串 行 化 (Serializable)調(diào) 度n 多 個(gè) 事 務(wù) 的 并 發(fā) 執(zhí) 行 是 正 確 的 , 當(dāng) 且 僅 當(dāng) 其 結(jié) 果 與按 某 一 次 序 串 行 地 執(zhí) 行 這 些 事 務(wù) 時(shí) 的 結(jié) 果 相 同v可 串 行 性 (Serializability) 是 并 發(fā) 事 務(wù) 正 確 調(diào) 度 的 準(zhǔn) 則 一 個(gè) 給 定 的 并 發(fā) 調(diào) 度 , 當(dāng) 且 僅 當(dāng) 它 是 可 串 行 化 的 ,才 認(rèn) 為 是 正 確 調(diào) 度 可 串 行 化 調(diào) 度 ( 續(xù) )例 現(xiàn) 在 有 兩 個(gè) 事 務(wù) , 分 別 包 含 下 列 操 作 : 事 務(wù) T1: 讀 B; A=B+1; 寫(xiě) 回 A 事 務(wù) T2: 讀 A; B=A+1; 寫(xiě) 回 B假 設(shè) A的 初 值 為 2, B的 初 值 為 2?,F(xiàn) 給 出 對(duì) 這 兩 個(gè) 事 務(wù) 不 同 的 調(diào) 度 策 略 可 串 行 化 調(diào) 度 ( 續(xù) ) 對(duì) 這 兩 個(gè) 事 務(wù) 的 不 同 調(diào) 度 策 略 串 行 執(zhí) 行串 行 調(diào) 度 策 略 1串 行 調(diào) 度 策 略 2 交 錯(cuò) 執(zhí) 行不 可 串 行 化 的 調(diào) 度可 串 行 化 的 調(diào) 度 串 行 化 調(diào) 度 ,正 確 的 調(diào) 度T1 T2Slock BY=R(B)=2Unlock BXlock AA=Y+1=3W(A)Unlock A Slock AX=R(A)=3 Unlock AXlock BB=X+1=4W(B)Unlock B串 行 調(diào) 度 (a) n 假 設(shè) A、 B的 初 值 均 為 2。n 按 T1T2次 序 執(zhí) 行 結(jié) 果為 A=3, B=4 n 串 行 調(diào) 度 策 略 ,正 確 的 調(diào) 度 串 行 化 調(diào) 度 ,正 確 的 調(diào) 度T1 T2Slock AX=R(A)=2Unlock AXlock BB=X+1=3W(B)Unlock BSlock BY=R(B)=3 Unlock BXlock AA=Y+1=4W(A)Unlock A 串 行 調(diào) 度 (b) n 假 設(shè) A、 B的 初 值 均 為 2。n T2T1次 序 執(zhí) 行 結(jié) 果 為 B=3,A=4 n 串 行 調(diào) 度 策 略 ,正 確 的 調(diào) 度 不 可 串 行 化 調(diào) 度 , 錯(cuò) 誤 的 調(diào) 度T1 T2Slock BY=R(B)=2 Slock AX=R(A)=2Unlock B Unlock AXlock AA=Y+1=3W(A) Xlock BB=X+1=3W(B)Unlock A Unlock B不 可 串 行 化 的 調(diào) 度 n 執(zhí) 行 結(jié) 果 與 (a)、 (b)的 結(jié)果 都 不 同n 是 錯(cuò) 誤 的 調(diào) 度 可 串 行 化 調(diào) 度 , 正 確 的 調(diào) 度T1 T2Slock BY=R(B)=2Unlock BXlock A Slock AA=Y+1=3 等 待W(A) 等 待Unlock A 等 待X=R(A)=3 Unlock AXlock BB=X+1=4W(B)Unlock B可 串 行 化 的 調(diào) 度 n 執(zhí) 行 結(jié) 果 與 串 行 調(diào) 度(a)的 執(zhí) 行 結(jié) 果 相 同n 是 正 確 的 調(diào) 度 11.4 并 發(fā) 調(diào) 度 的 可 串 行 性vDBMS對(duì) 并 發(fā) 事 務(wù) 不 同 的 調(diào) 度 可 能 會(huì) 產(chǎn) 生 不 同 的結(jié) 果一 、 什 么 樣 的 并 發(fā) 操 作 調(diào) 度 是 正 確 的二 、 如 何 保 證 并 發(fā) 操 作 的 調(diào) 度 是 正 確 的 二 、 如 何 保 證 并 發(fā) 操 作 的 調(diào) 度 是 正 確 的v為 了 保 證 并 行 操 作 的 正 確 性 , DBMS的 并 行 控 制機(jī) 制 必 須 提 供 一 定 的 手 段 來(lái) 保 證 調(diào) 度 是 可 串 行 化的 。v從 理 論 上 講 , 在 某 一 事 務(wù) 執(zhí) 行 時(shí) 禁 止 其 他 事 務(wù) 執(zhí)行 的 調(diào) 度 策 略 一 定 是 可 串 行 化 的 調(diào) 度 , 這 也 是 最簡(jiǎn) 單 的 調(diào) 度 策 略 , 但 這 種 方 法 實(shí) 際 上 是 不 可 行 的 ,因 為 它 使 用 戶 不 能 充 分 共 享 數(shù) 據(jù) 庫(kù) 資 源 。 如 何 保 證 并 發(fā) 操 作 的 調(diào) 度 是 正 確 的 ( 續(xù) )v保 證 并 發(fā) 操 作 調(diào) 度 正 確 性 的 方 法 封 鎖 方 法 : 兩 段 鎖 ( Two-Phase Locking, 簡(jiǎn) 稱 2PL)協(xié) 議 時(shí) 標(biāo) 方 法 樂(lè) 觀 方 法 11.4.2 沖 突 可 串 行 化 調(diào) 度v可 串 行 化 調(diào) 度 的 充 分 條 件 一 個(gè) 調(diào) 度 Sc在 保 證 沖 突 操 作 的 次 序 不 變 的 情 況 下 , 通 過(guò) 交換 兩 個(gè) 事 務(wù) 不 沖 突 操 作 的 次 序 得 到 另 一 個(gè) 調(diào) 度 Sc, 如 果 Sc是 串 行 的 , 稱 調(diào) 度 Sc為 沖 突 可 串 行 化 的 調(diào) 度 一 個(gè) 調(diào) 度 是 沖 突 可 串 行 化 , 一 定 是 可 串 行 化 的 調(diào) 度 沖 突 可 串 行 化 調(diào) 度 ( 續(xù) )沖 突 操 作v沖 突 操 作 是 指 不 同 的 事 務(wù) 對(duì) 同 一 個(gè) 數(shù) 據(jù) 的 讀 寫(xiě) 操 作 和 寫(xiě) 寫(xiě)操 作 Ri (x)與 Wj(x) /* 事 務(wù) Ti讀 x, Tj寫(xiě) x*/ Wi(x)與 Wj(x) /* 事 務(wù) Ti寫(xiě) x, Tj寫(xiě) x*/v其 他 操 作 是 不 沖 突 操 作v不 同 事 務(wù) 的 沖 突 操 作 和 同 一 事 務(wù) 的 兩 個(gè) 操 作 不 能 交 換(Swap) 沖 突 可 串 行 化 調(diào) 度 ( 續(xù) ) 例 今 有 調(diào) 度Sc1=r1(A)w1(A)r2(A)w2(A)r1(B)w1(B)r2(B)w2(B) 把 w2(A)與 r1(B)w1(B)交 換 , 得 到 : r1(A)w1(A)r2(A)r1(B)w1(B)w2(A)r2(B)w2(B) 再 把 r2(A)與 r1(B)w1(B)交 換 : Sc2 r1(A)w1(A)r1(B)w1(B)r2(A)w2(A)r2(B)w2(B) Sc2等 價(jià) 于 一 個(gè) 串 行 調(diào) 度 T1, T2, Sc1沖 突 可 串 行 化 的 調(diào) 度 沖 突 可 串 行 化 調(diào) 度 ( 續(xù) )v沖 突 可 串 行 化 調(diào) 度 是 可 串 行 化 調(diào) 度 的 充 分 條 件 , 不 是 必 要條 件 。 還 有 不 滿 足 沖 突 可 串 行 化 條 件 的 可 串 行 化 調(diào) 度 。 例 有 3個(gè) 事 務(wù) T1=W1(Y)W1(X), T2=W2(Y)W2(X), T3=W3(X) 調(diào) 度 L1=W1(Y)W1(X)W2(Y)W2(X) W3(X)是 一 個(gè) 串 行 調(diào) 度 。 調(diào) 度 L2=W1(Y)W2(Y)W2(X)W1(X)W3(X)不 滿 足 沖 突 可 串 行化 。 但 是 調(diào) 度 L2是 可 串 行 化 的 , 因 為 L2執(zhí) 行 的 結(jié) 果 與 調(diào) 度L1相 同 , Y的 值 都 等 于 T2的 值 , X的 值 都 等 于 T3的 值 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 11.5 兩 段 鎖 協(xié) 議v封 鎖 協(xié) 議 運(yùn) 用 封 鎖 方 法 時(shí) , 對(duì) 數(shù) 據(jù) 對(duì) 象 加 鎖 時(shí) 需 要 約 定 一 些 規(guī)則 何 時(shí) 申 請(qǐng) 封 鎖 持 鎖 時(shí) 間 何 時(shí) 釋 放 封 鎖 等v兩 段 封 鎖 協(xié) 議 (Two-Phase Locking, 簡(jiǎn) 稱 2PL)是 最 常用 的 一 種 封 鎖 協(xié) 議 , 理 論 上 證 明 使 用 兩 段 封 鎖 協(xié) 議 產(chǎn)生 的 是 可 串 行 化 調(diào) 度 兩 段 鎖 協(xié) 議 ( 續(xù) )v兩 段 鎖 協(xié) 議 指 所 有 事 務(wù) 必 須 分 兩 個(gè) 階 段 對(duì) 數(shù) 據(jù) 項(xiàng) 加 鎖 和 解 鎖 n在 對(duì) 任 何 數(shù) 據(jù) 進(jìn) 行 讀 、 寫(xiě) 操 作 之 前 , 事 務(wù) 首 先 要 獲 得對(duì) 該 數(shù) 據(jù) 的 封 鎖n 在 釋 放 一 個(gè) 封 鎖 之 后 , 事 務(wù) 不 再 申 請(qǐng) 和 獲 得 任 何 其 他封 鎖 兩 段 鎖 協(xié) 議 ( 續(xù) )v“兩 段 ” 鎖 的 含 義事 務(wù) 分 為 兩 個(gè) 階 段 第 一 階 段 是 獲 得 封 鎖 , 也 稱 為 擴(kuò) 展 階 段事 務(wù) 可 以 申 請(qǐng) 獲 得 任 何 數(shù) 據(jù) 項(xiàng) 上 的 任 何 類 型 的 鎖 , 但 是 不 能 釋 放 任何 鎖 第 二 階 段 是 釋 放 封 鎖 , 也 稱 為 收 縮 階 段 事 務(wù) 可 以 釋 放 任 何 數(shù) 據(jù) 項(xiàng) 上 的 任 何 類 型 的 鎖 , 但 是 不 能 再 申 請(qǐng) 任 何鎖 兩 段 鎖 協(xié) 議 ( 續(xù) )例事 務(wù) Ti遵 守 兩 段 鎖 協(xié) 議 , 其 封 鎖 序 列 是 :Slock A Slock B Xlock C Unlock B Unlock A Unlock C;| 擴(kuò) 展 階 段 | | 收 縮 階 段 |事 務(wù) Tj不 遵 守 兩 段 鎖 協(xié) 議 , 其 封 鎖 序 列 是 : Slock A Unlock A Slock B Xlock C Unlock C Unlock B; 兩 段 鎖 協(xié) 議 ( 續(xù) )事 務(wù) T1 事 務(wù) T2Slock(A)R(A=260) Slock(C)R(C=300)Xlock(A)W(A=160) Xlock( C )W(C=250)Slock(A) Slock(B) 等 待R(B=1000) 等 待Xlock(B) 等 待W(B=1100) 等 待Unlock(A) 等 待R(A=160)Xlock(A)Unlock(B) W(A=210)Unlock( C )遵 守 兩 段 鎖 協(xié) 議 的 可 串 行 化 調(diào) 度 n 左 圖 的 調(diào) 度 是 遵 守 兩 段 鎖 協(xié) 議的 , 因 此 一 定 是 一 個(gè) 可 串 行 化調(diào) 度 。 兩 段 鎖 協(xié) 議 ( 續(xù) )v并 行 執(zhí) 行 的 所 有 事 務(wù) 均 遵 守 兩 段 鎖 協(xié) 議 , 則 對(duì) 這些 事 務(wù) 的 所 有 并 行 調(diào) 度 策 略 都 是 可 串 行 化 的 。 所 有 遵 守 兩 段 鎖 協(xié) 議 的 事 務(wù) , 其 并 行 執(zhí) 行 的 結(jié) 果一 定 是 正 確 的v事 務(wù) 遵 守 兩 段 鎖 協(xié) 議 是 可 串 行 化 調(diào) 度 的 充 分 條 件 ,而 不 是 必 要 條 件v可 串 行 化 的 調(diào) 度 中 , 不 一 定 所 有 事 務(wù) 都 必 須 符 合兩 段 鎖 協(xié) 議 。 兩 段 鎖 協(xié) 議 ( 續(xù) )v T1Slock B讀 B=2Y=BXlock A A=Y+1寫(xiě) 回 A=3Unlock BUnlock A T2 Slock A 等 待 等 待 等 待 等 待 等 待Slock A讀 A=3 Y=A Xlock BB=Y+1寫(xiě) 回 B=4Unlock BUnlock A T1Slock B讀 B=2Y=BUnlock BXlock A A=Y+1寫(xiě) 回 A=3Unlock A T2 Slock A等 待等 待等 待等 待Slock A讀 A=3X=AUnlock AXlock BB=X+1寫(xiě) 回 B=4Unlock B (a) 遵 守 兩 段 鎖 協(xié) 議 (b) 不 遵 守 兩 段 鎖 協(xié) 議 T1Slock B讀 B=2Y=BUnlock BXlock AA=Y+1寫(xiě) 回 A=3Unlock A T2 Slock A讀 A=2X=AUnlock AXlock B等 待Xlock BB=X+1寫(xiě) 回 B=3Unlock B (c) 不 遵 守 兩 段 鎖 協(xié) 議 兩 段 鎖 協(xié) 議 ( 續(xù) )v兩 段 鎖 協(xié) 議 與 防 止 死 鎖 的 一 次 封 鎖 法 一 次 封 鎖 法 要 求 每 個(gè) 事 務(wù) 必 須 一 次 將 所 有 要 使 用 的 數(shù)據(jù) 全 部 加 鎖 , 否 則 就 不 能 繼 續(xù) 執(zhí) 行 , 因 此 一 次 封 鎖 法遵 守 兩 段 鎖 協(xié) 議 但 是 兩 段 鎖 協(xié) 議 并 不 要 求 事 務(wù) 必 須 一 次 將 所 有 要 使 用的 數(shù) 據(jù) 全 部 加 鎖 , 因 此 遵 守 兩 段 鎖 協(xié) 議 的 事 務(wù) 可 能 發(fā)生 死 鎖 兩 段 鎖 協(xié) 議 ( 續(xù) )例 遵 守 兩 段 鎖 協(xié) 議 的 事 務(wù) 發(fā) 生 死 鎖T1Slock BR(B)=2 Xlock A等 待等 待 T2 Slock AR(A)=2 Xlock A等 待 遵 守 兩 段 鎖 協(xié) 議 的 事 務(wù) 可 能 發(fā) 生 死 鎖 兩 段 鎖 協(xié) 議 ( 續(xù) )v兩 段 鎖 協(xié) 議 與 三 級(jí) 封 鎖 協(xié) 議 兩 類 不 同 目 的 的 協(xié) 議 兩 段 鎖 協(xié) 議保 證 并 發(fā) 調(diào) 度 的 正 確 性 三 級(jí) 封 鎖 協(xié) 議在 不 同 程 度 上 保 證 數(shù) 據(jù) 一 致 性 遵 守 第 三 級(jí) 封 鎖 協(xié) 議 必 然 遵 守 兩 段 協(xié) 議 第 十 一 章 并 發(fā) 控 制11.1 并 發(fā) 控 制 概 述11.2 封 鎖11.3 活 鎖 和 死 鎖11.4 并 發(fā) 調(diào) 度 的 可 串 行 性11.5 兩 段 鎖 協(xié) 議11.6 封 鎖 的 粒 度11.7 小 結(jié) 封 鎖 粒 度v封 鎖 對(duì) 象 的 大 小 稱 為 封 鎖 粒 度 (Granularity) v封 鎖 的 對(duì) 象 : 邏 輯 單 元 , 物 理 單 元 例 : 在 關(guān) 系 數(shù) 據(jù) 庫(kù) 中 , 封 鎖 對(duì) 象 : 邏 輯 單 元 : 屬 性 值 、 屬 性 值 集 合 、 元 組 、 關(guān) 系 、 索 引 項(xiàng) 、 整個(gè) 索 引 、 整 個(gè) 數(shù) 據(jù) 庫(kù) 等 物 理 單 元 : 頁(yè) ( 數(shù) 據(jù) 頁(yè) 或 索 引 頁(yè) ) 、 物 理 記 錄 等 選 擇 封 鎖 粒 度 原 則v封 鎖 粒 度 與 系 統(tǒng) 的 并 發(fā) 度 和 并 發(fā) 控 制 的 開(kāi) 銷 密 切相 關(guān) 。 封 鎖 的 粒 度 越 大 , 數(shù) 據(jù) 庫(kù) 所 能 夠 封 鎖 的 數(shù) 據(jù) 單 元 就 越少 , 并 發(fā) 度 就 越 小 , 系 統(tǒng) 開(kāi) 銷 也 越 小 ; 封 鎖 的 粒 度 越 小 , 并 發(fā) 度 較 高 , 但 系 統(tǒng) 開(kāi) 銷 也 就 越 大 選 擇 封 鎖 粒 度 的 原 則 ( 續(xù) )例v若 封 鎖 粒 度 是 數(shù) 據(jù) 頁(yè) , 事 務(wù) T1需 要 修 改 元 組 L1, 則 T1必須 對(duì) 包 含 L1的 整 個(gè) 數(shù) 據(jù) 頁(yè) A加 鎖 。 如 果 T1對(duì) A加 鎖 后 事 務(wù)T2要 修 改 A中 元 組 L2, 則 T2被 迫 等 待 , 直 到 T1釋 放 A。v如 果 封 鎖 粒 度 是 元 組 , 則 T1和 T2可 以 同 時(shí) 對(duì) L1和 L2加 鎖 ,不 需 要 互 相 等 待 , 提 高 了 系 統(tǒng) 的 并 行 度 。v又 如 , 事 務(wù) T需 要 讀 取 整 個(gè) 表 , 若 封 鎖 粒 度 是 元 組 , T必 須對(duì) 表 中 的 每 一 個(gè) 元 組 加 鎖 , 開(kāi) 銷 極 大 選 擇 封 鎖 粒 度 的 原 則 ( 續(xù) )v 多 粒 度 封 鎖 (Multiple Granularity Locking) 在 一 個(gè) 系 統(tǒng) 中 同 時(shí) 支 持 多 種 封 鎖 粒 度 供 不 同 的 事 務(wù) 選 擇v 選 擇 封 鎖 粒 度 同 時(shí) 考 慮 封 鎖 開(kāi) 銷 和 并 發(fā) 度 兩 個(gè) 因 素 , 適 當(dāng) 選 擇 封 鎖 粒 度 需 要 處 理 多 個(gè) 關(guān) 系 的 大 量 元 組 的 用 戶 事 務(wù) : 以 數(shù) 據(jù) 庫(kù) 為 封 鎖 單 位 需 要 處 理 大 量 元 組 的 用 戶 事 務(wù) : 以 關(guān) 系 為 封 鎖 單 元 只 處 理 少 量 元 組 的 用 戶 事 務(wù) : 以 元 組 為 封 鎖 單 位 11.6.1 多 粒 度 封 鎖v多 粒 度 樹(shù) 以 樹(shù) 形 結(jié) 構(gòu) 來(lái) 表 示 多 級(jí) 封 鎖 粒 度 根 結(jié) 點(diǎn) 是 整 個(gè) 數(shù) 據(jù) 庫(kù) , 表 示 最 大 的 數(shù) 據(jù) 粒 度 葉 結(jié) 點(diǎn) 表 示 最 小 的 數(shù) 據(jù) 粒 度 多 粒 度 封 鎖 ( 續(xù) )例 : 三 級(jí) 粒 度 樹(shù) 。 根 結(jié) 點(diǎn) 為 數(shù) 據(jù) 庫(kù) , 數(shù) 據(jù) 庫(kù) 的 子 結(jié) 點(diǎn) 為 關(guān) 系 ,關(guān) 系 的 子 結(jié) 點(diǎn) 為 元 組 。 數(shù) 據(jù) 庫(kù) 關(guān) 系 Rn關(guān) 系 R 1元 組 元 組元 組 元 組 三 級(jí) 粒 度 樹(shù) 多 粒 度 封 鎖 協(xié) 議v允 許 多 粒 度 樹(shù) 中 的 每 個(gè) 結(jié) 點(diǎn) 被 獨(dú) 立 地 加 鎖v對(duì) 一 個(gè) 結(jié) 點(diǎn) 加 鎖 意 味 著 這 個(gè) 結(jié) 點(diǎn) 的 所 有 后 裔 結(jié) 點(diǎn)也 被 加 以 同 樣 類 型 的 鎖v在 多 粒 度 封 鎖 中 一 個(gè) 數(shù) 據(jù) 對(duì) 象 可 能 以 兩 種 方 式 封鎖 : 顯 式 封 鎖 和 隱 式 封 鎖 顯 式 封 鎖 和 隱 式 封 鎖v顯 式 封 鎖 : 直 接 加 到 數(shù) 據(jù) 對(duì) 象 上 的 封 鎖v隱 式 封 鎖 : 該 數(shù) 據(jù) 對(duì) 象 沒(méi) 有 獨(dú) 立 加 鎖 , 是 由 于 其 上級(jí) 結(jié) 點(diǎn) 加 鎖 而 使 該 數(shù) 據(jù) 對(duì) 象 加 上 了 鎖v顯 式 封 鎖 和 隱 式 封 鎖 的 效 果 是 一 樣 的 顯 式 封 鎖 和 隱 式 封 鎖 ( 續(xù) )v系 統(tǒng) 檢 查 封 鎖 沖 突 時(shí)n 要 檢 查 顯 式 封 鎖n 還 要 檢 查 隱 式 封 鎖v例 如 事 務(wù) T要 對(duì) 關(guān) 系 R1加 X鎖 系 統(tǒng) 必 須 搜 索 其 上 級(jí) 結(jié) 點(diǎn) 數(shù) 據(jù) 庫(kù) 、 關(guān) 系 R1 還 要 搜 索 R1的 下 級(jí) 結(jié) 點(diǎn) , 即 R1中 的 每 一 個(gè) 元 組 如 果 其 中 某 一 個(gè) 數(shù) 據(jù) 對(duì) 象 已 經(jīng) 加 了 不 相 容 鎖 , 則 T必 須 等 待 顯 式 封 鎖 和 隱 式 封 鎖 ( 續(xù) )v對(duì) 某 個(gè) 數(shù) 據(jù) 對(duì) 象 加 鎖 , 系 統(tǒng) 要 檢 查 該 數(shù) 據(jù) 對(duì) 象有 無(wú) 顯 式 封 鎖 與 之 沖 突 所 有 上 級(jí) 結(jié) 點(diǎn)檢 查 本 事 務(wù) 的 顯 式 封 鎖 是 否 與 該 數(shù) 據(jù) 對(duì) 象 上 的 隱 式 封 鎖沖 突 : (由 上 級(jí) 結(jié) 點(diǎn) 已 加 的 封 鎖 造 成 的 ) 所 有 下 級(jí) 結(jié) 點(diǎn)看 上 面 的 顯 式 封 鎖 是 否 與 本 事 務(wù) 的 隱 式 封 鎖 ( 將 加 到 下級(jí) 結(jié) 點(diǎn) 的 封 鎖 ) 沖 突 11.6.2 意 向 鎖v引 進(jìn) 意 向 鎖 ( intention lock) 目 的 提 高 對(duì) 某 個(gè) 數(shù) 據(jù) 對(duì) 象 加 鎖 時(shí) 系 統(tǒng) 的 檢 查 效 率 意 向 鎖 (續(xù) )v如 果 對(duì) 一 個(gè) 結(jié) 點(diǎn) 加 意 向 鎖 , 則 說(shuō) 明 該 結(jié) 點(diǎn) 的 下 層 結(jié) 點(diǎn) 正 在被 加 鎖v對(duì) 任 一 結(jié) 點(diǎn) 加 基 本 鎖 , 必 須 先 對(duì) 它 的 上 層 結(jié) 點(diǎn) 加 意 向 鎖v例 如 , 對(duì) 任 一 元 組 加 鎖 時(shí) , 必 須 先 對(duì) 它 所 在 的 數(shù) 據(jù) 庫(kù) 和 關(guān)系 加 意 向 鎖 常 用 意 向 鎖v意 向 共 享 鎖 (Intent Share Lock, 簡(jiǎn) 稱 IS鎖 )v意 向 排 它 鎖 (Intent Exclusive Lock, 簡(jiǎn) 稱 IX鎖 )v共 享 意 向 排 它 鎖 (Share Intent Exclusive Lock,簡(jiǎn) 稱 SIX鎖 ) 意 向 鎖 ( 續(xù) )vIS鎖 如 果 對(duì) 一 個(gè) 數(shù) 據(jù) 對(duì) 象 加 IS鎖 , 表 示 它 的 后 裔 結(jié) 點(diǎn) 擬 ( 意向 ) 加 S鎖 。 例 如 : 事 務(wù) T1要 對(duì) R1中 某 個(gè) 元 組 加 S鎖 , 則 要 首 先 對(duì) 關(guān)系 R1和 數(shù) 據(jù) 庫(kù) 加 IS鎖 意 向 鎖 ( 續(xù) )vIX鎖 如 果 對(duì) 一 個(gè) 數(shù) 據(jù) 對(duì) 象 加 IX鎖 , 表 示 它 的 后 裔 結(jié) 點(diǎn) 擬 ( 意向 ) 加 X鎖 。 例 如 : 事 務(wù) T1要 對(duì) R1中 某 個(gè) 元 組 加 X鎖 , 則 要 首 先 對(duì) 關(guān) 系 R1和 數(shù) 據(jù) 庫(kù) 加 IX鎖 意 向 鎖 ( 續(xù) )vSIX鎖 如 果 對(duì) 一 個(gè) 數(shù) 據(jù) 對(duì) 象 加 SIX鎖 , 表 示 對(duì) 它 加 S鎖 , 再 加IX鎖 , 即 SIX = S + IX。 例 : 對(duì) 某 個(gè) 表

注意事項(xiàng)

本文(數(shù)據(jù)庫(kù)系統(tǒng)概論 第十一章并發(fā)控制)為本站會(huì)員(w****2)主動(dòng)上傳,裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng)(點(diǎn)擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因?yàn)榫W(wǎng)速或其他原因下載失敗請(qǐng)重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!