為生成高效的執(zhí)行計劃,查詢優(yōu)化器" />
時間:2022-12-07 10:30:01 | 來源:信息時代
時間:2022-12-07 10:30:01 來源:信息時代
執(zhí)行計劃生成 : DBMS為用戶的查詢請求生成執(zhí)行計劃的過程,是DBMS查詢優(yōu)化器的主要任務(wù)。一個查詢的執(zhí)行計劃確定了DBMS查詢執(zhí)行引擎執(zhí)行該查詢的方式。
為生成高效的執(zhí)行計劃,查詢優(yōu)化器一方面要合理選擇單個操作符的操作算法,確定需要的緩沖區(qū)大小,以及選擇滿足交換律和結(jié)合律的操作符的操作順序等,同時還需要考慮整個查詢樹的執(zhí)行方式和執(zhí)行順序,主要包括父子結(jié)點間傳遞中間結(jié)果的方式和計劃樹的執(zhí)行順序。
子結(jié)點向父結(jié)點傳遞中間結(jié)果可能是以實體化方式,也可能是以流水線方式。當(dāng)內(nèi)存不足時,或父子操作符之間存在天然的阻塞關(guān)系時,子結(jié)點需要以實體化方式向父結(jié)點傳遞中間結(jié)果,即子結(jié)點的輸出結(jié)果將以臨時文件形式寫到磁盤上,父結(jié)點必須在子結(jié)點執(zhí)行結(jié)束后才可以開始執(zhí)行,并去磁盤上讀取子結(jié)點產(chǎn)生的輸出數(shù)據(jù)作為其輸入。子結(jié)點以流水線方式向父結(jié)點傳遞中間結(jié)果時,子結(jié)點操作符的輸出將寫到內(nèi)存緩沖區(qū)中,父結(jié)點操作符從緩沖區(qū)讀數(shù)據(jù),父子操作符可以并行執(zhí)行,而不必等待子操作符執(zhí)行結(jié)束。
例如, 對于關(guān)系代數(shù)操作:πA.B(σR.C<10(R⋈S)),其對應(yīng)的查詢計劃樹如圖1所示。
圖1 查詢計劃樹示例
圖2 多表連接的查詢計劃樹示例
圖3 分解后的查詢計劃樹
微信公眾號
版權(quán)所有? 億企邦 1997-2022 保留一切法律許可權(quán)利。