查詢優(yōu)化器結(jié)構(gòu)(數(shù)據(jù)庫)
時(shí)間:2022-12-14 04:30:01 | 來源:信息時(shí)代
時(shí)間:2022-12-14 04:30:01 來源:信息時(shí)代
查詢優(yōu)化器結(jié)構(gòu) : 查詢優(yōu)化機(jī)制的組成構(gòu)件。關(guān)系數(shù)據(jù)庫的查詢優(yōu)化器主要由兩部分組成: 代數(shù)優(yōu)化器和物理優(yōu)化器,如圖1所示。
圖1 查詢優(yōu)化器的結(jié)構(gòu)
代數(shù)優(yōu)化器負(fù)責(zé)查詢的代數(shù)優(yōu)化,即根據(jù)關(guān)系代數(shù)的等價(jià)變換規(guī)則及一套啟發(fā)式規(guī)則,通過對查詢做等價(jià)變換,達(dá)到優(yōu)化查詢執(zhí)行的目的。常用的啟發(fā)式規(guī)則包括: 選擇運(yùn)算應(yīng)盡可能先做; 把投影運(yùn)算和選擇運(yùn)算同時(shí)進(jìn)行,以避免重復(fù)掃描關(guān)系:把投影同其前或其后的雙目運(yùn)算結(jié)合起來,以避免重復(fù)掃描關(guān)系; 把某些選擇同在它前面要執(zhí)行的笛卡兒積結(jié)合起來成為一個(gè)連接運(yùn)算,以大量減少中間結(jié)果集的大小;尋找公共子表達(dá)式,避免公共子表達(dá)式的重復(fù)計(jì)算。關(guān)系代數(shù)的等價(jià)變換規(guī)則保證了運(yùn)用這些啟發(fā)式規(guī)則進(jìn)行等價(jià)變換的正確性。
代數(shù)優(yōu)化僅僅是通過改變查詢語句中操作的次序和組合來優(yōu)化查詢,它不涉及底層的存取路徑,因此,僅僅進(jìn)行代數(shù)優(yōu)化是不夠的。物理優(yōu)化是選擇高效合理的操作算法或存取路徑,以求得優(yōu)化的查詢計(jì)劃,從而達(dá)到查詢優(yōu)化的目標(biāo)。
由邏輯計(jì)劃生成一個(gè)物理計(jì)劃時(shí)要做的工作包括增加掃描、排序、分組、去重等操作符;確定滿足結(jié)合律與分配律的操作符(如連接、并、交等)的次序;確定各個(gè)操作符的算法; 確定參數(shù)從一個(gè)操作符傳送到下一個(gè)操作符是采用實(shí)體化方式還是采用流水線方式等。
物理優(yōu)化器包括基于代價(jià)、基于規(guī)則、基于語義及同時(shí)基于代價(jià)和規(guī)則等幾種。
基于規(guī)則的物理優(yōu)化是依據(jù)一套啟發(fā)式規(guī)則來選擇操作算法或存取路徑,這些啟發(fā)式規(guī)則適用于大多數(shù)情況,但非所有情況。所以基于規(guī)則的物理優(yōu)化,優(yōu)化本身的速度比較快,但可能丟失好的執(zhí)行計(jì)劃。同時(shí)它往往對用戶查詢語句的質(zhì)量要求較高,對于同一個(gè)查詢,好的查詢語句可能獲得更高的效率。
基于代價(jià)的物理優(yōu)化是根據(jù)數(shù)據(jù)字典中記載的各種統(tǒng)計(jì)信息,估算各種執(zhí)行策略的代價(jià),并從中選擇一個(gè)系統(tǒng)認(rèn)為是“最好”的執(zhí)行策略?;诖鷥r(jià)的優(yōu)化方法可以找出各種可能的選擇(連接的各種排列次序、并的各種排列次序、操作符各種實(shí)現(xiàn)算法等)加以組合,對每個(gè)可能的物理計(jì)劃估算代價(jià)和內(nèi)存需求量,在滿足內(nèi)存需求的前提下選擇具有最小代價(jià)的計(jì)劃。基于代價(jià)的優(yōu)化方法可以找出最優(yōu)的執(zhí)行計(jì)劃,但優(yōu)化的開銷可能會(huì)比較高。
基于代價(jià)的物理優(yōu)化由于要遍歷全部物理計(jì)劃的搜索空間,因此代價(jià)會(huì)比較高。為了減少物理優(yōu)化本身的開銷,基于代價(jià)的查詢優(yōu)化常常與啟發(fā)式優(yōu)化結(jié)合起來,通過啟發(fā)式規(guī)則來縮減代價(jià)優(yōu)化的搜索空間,這就是同時(shí)基于代價(jià)和規(guī)則的物理優(yōu)化。由于在利用啟發(fā)式規(guī)則縮減搜索空間時(shí),可能會(huì)失去最優(yōu)計(jì)劃,因此這種優(yōu)化策略尋找的是較好的查詢計(jì)劃而非最優(yōu)的計(jì)劃,但對查詢的總響應(yīng)時(shí)間卻可能要短于以高昂代價(jià)獲得最優(yōu)計(jì)劃并執(zhí)行的時(shí)間。
基于語義的查詢優(yōu)化是利用關(guān)系上定義的各種完整性約束條件,通過查詢重寫,將給定的查詢變換為更有效的等價(jià)查詢?;谡Z義的優(yōu)化通常與基于規(guī)則或基于代價(jià)的優(yōu)化結(jié)合使用。