Re: [問題] 103年地特 三等資料庫

作者: fcouple (盲人騎瞎馬,夜半臨深池)   2015-03-24 08:31:21
grandoph 您好:
先解釋字眼,怕誤會。
唐箏口中講「Abort」,我比較喜歡用「Roll Back」,
中文都是指「撤銷交易」的意思。
就像「水平、光盤、鼠標」聽起來會怪怪的,還是講「水準、光碟、
滑鼠」聽起來會好些。
只是用字比較精準而已,指的是同一個東西。隨意。
再來,回答你問的問題。
第一個問題:是,直接寫 roll back,或寫「撤銷交易」也行。
第二個問題:
「有」比我晚已經做過交易了,我(優先權低的)要roll back
「沒有」比我晚:我做交易
演算法中,「早、晚」,間接意思,就是「早優先權低、晚優先權高」。
但你硬要套優先權高、優先權低,會很痛苦,不如迎合演算法原著的想法,
他的想法就只有「時間早、時間晚」。
底下舉一個簡單的例子,請開電腦看,用手機 Mo PTT 請「切換到整頁模式」
排版才不會亂掉:
題目
步驟 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
T1、T2 都對同一標的物 x 做動作。
擬答(括號內的字是提醒,不屬於答案):
(先觀察,T1 在第一步就先執行,T2 比較晚,在第二步,所以等一下假設時間早晚
要按照 T1 < T2)

T1 時戳 = 7
T2 時戳 = 12
(隨便給,T1 早,T2 晚就好)

R 為成功「讀取」資料 x 的交易中,時戳最大者。
W 為成功「寫入」資料 x 的交易中,時戳最大者。
(R、W 兩個一開始為 0)
(好了,開始做題目,為了容易讀,我把題目複製下來,省得捲上去回頭看,麻煩。)
步驟 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 1 步,T1 做 read
W=0 <= T1=7 (看看我 T1 是不是最晚)
W 沒比 T1 更晚,可以執行。此時:
R=7,W=0
步驟 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 2 步,T2 做 read
W=0 <= T2=12 (看看我 T2 是不是最晚)
W 沒比 T2 更晚,可以執行。此時:
R=12,W=0
步驟 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 3 步,T1 做 write
R=12 <= T1=7 (看看我 T1 是不是最晚)
W=0 <= T1=7 (看看我 T1 是不是最晚)
「R=12 <= T1=7 條件不符」代表 R 比 T1 更晚,不准執行。此時:
我 T1 只好 roll back,因為沒有執行,值不變 R=12,W=0
(這時,撤就撤了,不用去管什麼 wait die wound wait)
步驟 | T1 | T2
=====================
1 | read |
2 | | read
3 | write |
4 | | write
第 4 步,T2 做 write
R=12 <= T2=12 (看看我 T2 是不是最晚)
W=0 <= T2=12 (看看我 T2 是不是最晚)
R、W 沒人比 T2 更晚,可以執行。此時:
R=12,W=12
最後結果,T1 交易撤回。T2 執行。
如果讓你轉不過來:數字大的,優先權高。
這樣 ok 嗎?
※ 編輯: fcouple (211.76.33.33), 03/24/2015 09:47:16
作者: grandoph (跟節拍器不合)   2015-03-25 00:04:00
推用心,大概可以理解了 謝謝

Links booklink

Contact Us: admin [ a t ] ucptt.com