高普考題庫
115 年 115年公務人員高等考試三級考試暨普通考試・資料庫應用
申論 2某機構資料庫有以下兩張E 與C 資料表,並存在其關聯:E(SID, CID, Grade):共60000 筆資料,每個區塊(Block)存50 筆資料。C(CID, Name, Credit):共600 筆資料,每個區塊(Block)存30 筆資料。假設該機構系統可用的緩衝區(Buffer)M 共22 頁,並執行下面SQL 語法:SELECT E.SID, C.Name, E.GradeFROM E JOIN C ON E.CID = C.CID目前已知關聯式資料庫中,常見的Join 演算法有三種,即Simple NestedLoop Join (SNLJ)、Block Nested Loop Join (BNLJ)與Hash Join,其I/O 成本分別計算如下:Join 演算法I/O 成本公式說明SNLJB(R) + |R| × B(S)對R 每一筆Tuple,掃描整個S以Block 為單位分批載入R,每批掃描一次S;M-2BNLJB(R) + ⌈B(R)/(M-2)⌉× B(S)頁給外層,1 頁給內層,1 頁給輸出Hash Join3 × (B(R) + B(S))分割階段讀寫各一次,探測階段再讀一次演算法內符號說明如下:B(R)代表資料表R 的區塊(Block)數,也就是以R 作為JOIN 運算的驅動表(Driving Table / Outer Table);|R|代表資料表R 的資料筆數;M 代表可用緩衝區(Buffer)頁數;S 為要計算的資料表。請回答下面問題,並計算下列各演算法的I/O 成本(需列計算過程):㈠使用SNLJ 法,以資料表E 為驅動表。(5 分)㈡使用BNLJ 法,以資料表C 為驅動表。(5 分)㈢使用Hash Join 法(假設分割後各Partition 可完整放入記憶體)。(5 分)㈣綜合比較上述三種結果,在本題情境下應選擇那種演算法?說明原因。(10 分)