看板 Database 關於我們 聯絡資訊
※ 引述《yfmail (純粹)》之銘言: : 標題: [問題] DBMS支援的交易管理 : 時間: Mon May 11 19:48:43 2009 : : 第一次接觸database差點滅頂........怎麼那麼奧秘...泣~ : : DAMS有支援交易管理 : : 其中兩個最重要的異動操作是 並行控制 跟 回復處理 : : 我在念並行控制(concurrency control)時 : : 有一小節是在談排程(schedules)是否滿足"可循序性(serializability)" : : 但即使我知道有迴圈就不滿足可循序性 : : 可是它仍可用two-phase locking來使交易正確執行 : : 問題一:那麼多個交易發生不可循序性時到底會怎麼樣? : : 是會使交易結果錯誤嗎? : : 我現在腦中的糨糊 : : 1.交易是循序性(serial)時→免用鎖定法→交易會正確無誤 : : 問題二:2.交易是可循序性時(serializability)→到底要不要用到鎖定法..... : : 3.交易是不可循序性時→可以用二階段鎖定法→交易會正確無誤(排除死結可能) : : -- : ※ 發信站: 批踢踢實業坊(ptt.cc) : ◆ From: 118.232.182.92 : : 我剛剛靈光乍現發現一件事 : : 好像只要符合可循序性,那再搭配鎖定法,可以保證交易順利執行完畢 : : 但不可循序性,配上鎖定法,有時交易可以執行,有時會有死結發生,這將 : 導致交易無法執行 : : 以上的觀念是對的嗎? : ※ 編輯: yfmail 來自: 118.232.182.92 (05/11 20:38) : 推 adrianshum:2-phase commit 和 deadlock 是兩回事吧? 05/11 21:23 : → yfmail:喔~我是看講義寫說基本型或嚴格型(strict)2-phase locking 05/11 22:37 : → yfmail:不保證不會有死結發生....我頭..頭...好昏... 05/11 22:42 : 推 AndCycle:而且理論跟實務的實做會有出入, 你兩邊都要看 05/12 03:34 : → yfmail:好~我兩邊都會注意 那...可循序性的目的到底是什麼 05/12 10:29 我一向處理 database 交易的做法 (應該也是最正常的做法) 我想就是你所謂的循序性吧?. 簡而言之, 就是假設有一堆 resources 要佔用 (table, rows, whatsoever), 就大家都得依同樣的順序去取得使用權. 只要能做到這效果, 就不會有死結發生 假設 process 1 要 update table A, B, C process 2 要 update table C, B process 3 要 update table B, A 先定義好, A, B, C 的順序是要 A->B->C 那麼 process 1 的 update 順序要改為是 A, B, C process 2 是 B, C process 3 是 A, B (不能改變裡面的 update 順序, 就在 procss 開始的 時候依次序先做好 table/row lock) 然後, 死結就不再出現了 :) -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 202.155.236.82