Vertica的这些事(五)—— vertica优化
【摘要】
DELETE_VECTORS
数据模型:
1、 规范化你的表
2、 使用核实的压缩格式
表设计:
1、 使用分区
2、 定义主键外键
3、 默认的数字类型长度可能比实际需要的大。例如:NUMBERC 该类型默认的长度是38位,如果实际的长度比这个小,那你建表的时候...
DELETE_VECTORS
数据模型:
1、 规范化你的表
2、 使用核实的压缩格式
表设计:
1、 使用分区
2、 定义主键外键
3、 默认的数字类型长度可能比实际需要的大。例如:NUMBERC 该类型默认的长度是38位,如果实际的长度比这个小,那你建表的时候最好加上适合的长度。
4、 对于一个True/False值,Boolean类型比char(1)类型和integer类型更快。
Projections
1、 Segmentation vs. Replication (unsegmented)简单的说,如果数据量大的话使用Segmentation,小的话使用unsegmented
2、 使用order by ,理想的order by 的字段应该全部在where查询字句中出现(详见另一篇文章【】)
3、 列长度的规范,不要一味的定义大长度,在过滤条件和join时的字段如果是字符类型,最好使用int类型。
4、 GROUP BY:使用group by 时,一定要explain查看执行计划,如果执行计划中使用的【GROUP BY HASH】这时候就要修改你的查询sql或者projection的,group by最好使用【GROUP BY PIPELINE】这种方式使用更少的内存,查询更快!
5、 清楚不必要的projection,多余的projection意味着查询是要花费更多的时间去选择。
6、 Projection中的order 字段首先选用过滤的字段,然后选用join使用的列。
7、 确保Projection数据均匀分布在各个节点上,以免查询时产生数据倾斜。
查询:
1、 避免使用in
2、 避免使用union
3、 Select 时避免使用*,查询时选择合适的列
4、 使用with子句
5、 避免使用别名,例如 groupby 1,2,3
6、 在子查询中使用orderby
7、 避免使用不等关系,例如:>=,not in 等
8、 对于复杂的sql,可以多使用临时表
9、 delete_vectors中的数据尽量清除
资源(Resources)
1、 PROFILE,查看查询所需要的内存
2、 建立专用的资源池
文章来源: dataclub.blog.csdn.net,作者:数据社,版权归原作者所有,如需转载,请联系作者。
原文链接:dataclub.blog.csdn.net/article/details/51822980
【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)