※ 引述《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