声明:转载必须注明出处
今天检测了一下GP的limit offset子句对查询的作用
当offset很大时,不管有没有order by子句,都需要将数据传输到master进行处理
观察发现,语句开始执行时,segment的cpu使用率冲高,随后net输出冲高,master的net输入冲高
然后master的cpu冲高,此时segment的cpu复原
说明这个处理过程是:
segment准备数据-》发送给master-》master获取数据并丢弃offset部分-》返回limit部分
而且即便offset大于全表数据量仍执行以上过程
当offset过亿(当然数据量也过亿了)处理时间就要达到百秒量级了
按照我的想法,GP完全可以考虑更优化的算法充分发挥segment的资源,让offset更多的在segment完成
目前只有避免这种超大的offset子句,期待GP以后优化该算法
声明:转载必须注明出处
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/10109602/viewspace-1184091/
,如需转载,请注明出处,否则将追究法律责任。