阅读(4543)
赞(13)
Mycat2 Filter&Project&FieldTrimmer
2021-09-09 15:15:32 更新
Filter下推
Mycat2在对SQL编译成生成逻辑关系表达式.Mycat2对它进行Filter
下推规则处理,使Filter
尽量下沉到TableScan
之上,这样就可以应用分区剪裁规则,减少扫描的物理表的数量,使SQL查询具有水平扩展性.
Project下推
另外Project
下推也是一个很重要的规则,它关系表达式中的作用是执行投影与函数表达式计算.
- 当执行的函数是
session
级别的函数,比如row_count
,就不会下推该函数. - Mycat2会对多个相邻
Project
合拼. - 把常用的函数下推到存储节点运算,进一步减少Mycat的计算负担.
FieldTrimmer列剪裁
一方面,仅仅依赖SQL编译成逻辑关系表达式,以SQL语义生成Project
是不足够的,因为Mycat2会需要与后端存储节点进行网络通讯,如果没用的字段的列过多,会导致多余的网络损耗.另一方面,对于无法变成SQL的Project
,会进一步编译成执行器,在算子之间交换数据,存在多余的列的值,也是会导致多余的内存占用,转换计算问题.所以Mycat2在SQL重写器中引入FieldTrimmer
添加额外的Project
算子剪裁列来减少不必要的性能损耗.