Mycat2 Filter&Project&FieldTrimmer

2021-09-10 13:55 更新

Filter下推

Mycat2在對(duì)SQL編譯成生成邏輯關(guān)系表達(dá)式.Mycat2對(duì)它進(jìn)行Filter下推規(guī)則處理,使Filter盡量下沉到TableScan之上,這樣就可以應(yīng)用分區(qū)剪裁規(guī)則,減少掃描的物理表的數(shù)量,使SQL查詢具有水平擴(kuò)展性.

Project下推

另外Project下推也是一個(gè)很重要的規(guī)則,它關(guān)系表達(dá)式中的作用是執(zhí)行投影與函數(shù)表達(dá)式計(jì)算.

  1. 當(dāng)執(zhí)行的函數(shù)是session級(jí)別的函數(shù),比如row_count,就不會(huì)下推該函數(shù).
  2. Mycat2會(huì)對(duì)多個(gè)相鄰Project合拼.
  3. 把常用的函數(shù)下推到存儲(chǔ)節(jié)點(diǎn)運(yùn)算,進(jìn)一步減少M(fèi)ycat的計(jì)算負(fù)擔(dān).

FieldTrimmer列剪裁

一方面,僅僅依賴SQL編譯成邏輯關(guān)系表達(dá)式,以SQL語義生成Project是不足夠的,因?yàn)镸ycat2會(huì)需要與后端存儲(chǔ)節(jié)點(diǎn)進(jìn)行網(wǎng)絡(luò)通訊,如果沒用的字段的列過多,會(huì)導(dǎo)致多余的網(wǎng)絡(luò)損耗.另一方面,對(duì)于無法變成SQL的Project,會(huì)進(jìn)一步編譯成執(zhí)行器,在算子之間交換數(shù)據(jù),存在多余的列的值,也是會(huì)導(dǎo)致多余的內(nèi)存占用,轉(zhuǎn)換計(jì)算問題.所以Mycat2在SQL重寫器中引入FieldTrimmer添加額外的Project算子剪裁列來減少不必要的性能損耗.

以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)