阅读(4543) (13)

Mycat2 Filter&Project&FieldTrimmer

2021-09-09 15:15:32 更新

Filter下推

Mycat2在对SQL编译成生成逻辑关系表达式.Mycat2对它进行Filter下推规则处理,使Filter尽量下沉到TableScan之上,这样就可以应用分区剪裁规则,减少扫描的物理表的数量,使SQL查询具有水平扩展性.

Project下推

另外Project下推也是一个很重要的规则,它关系表达式中的作用是执行投影与函数表达式计算.

  1. 当执行的函数是session级别的函数,比如row_count,就不会下推该函数.
  2. Mycat2会对多个相邻Project合拼.
  3. 把常用的函数下推到存储节点运算,进一步减少Mycat的计算负担.

FieldTrimmer列剪裁

一方面,仅仅依赖SQL编译成逻辑关系表达式,以SQL语义生成Project是不足够的,因为Mycat2会需要与后端存储节点进行网络通讯,如果没用的字段的列过多,会导致多余的网络损耗.另一方面,对于无法变成SQL的Project,会进一步编译成执行器,在算子之间交换数据,存在多余的列的值,也是会导致多余的内存占用,转换计算问题.所以Mycat2在SQL重写器中引入FieldTrimmer添加额外的Project算子剪裁列来减少不必要的性能损耗.