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

看板Examination作者 (皇家典藏20年禮炮)時間11年前 (2015/03/24 08:31), 11年前編輯推噓1(100)
留言1則, 1人參與, 最新討論串3/3 (看更多)
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

03/25 00:04, , 1F
推用心,大概可以理解了 謝謝
03/25 00:04, 1F
文章代碼(AID): #1L4B1RCV (Examination)
文章代碼(AID): #1L4B1RCV (Examination)