最近才开始接触数仓性能优化,好像走进迷宫,头上永远顶着两句话:
这个是啥,那个是啥
因为数仓好像没啥性能优化的,可能这是小白的一种自我良好认知
根据我们的业务,优化工具经常用到的有以下两个
1、和mysql 类似。用 explain 工具
用这个工具,主要是用来查 资源内存和执行语句的时间问题
这也是关乎性能的基本指标
2、用命令 或者工具 dbeaver,查看输出, profile
这个没怎么看过,不做解释了,欢迎有用过的,来探讨
3、最近学到的优化方法,好像也不是什么高深的东西
1、 对于复杂的子查询语句,超过三个,四个的模型关联,就创建临时结果表,分步进行,曲线救国
2、最好不要用 merge 和 update ,多用 使用 Delete+Insert 。用了之后,大家都说好
3、尽量清空表,最好不要删除表,虽然delete 比较干脆利落的,但是数据量大,删除也是一项巨大工作量,,尝试分区删除,或者 truncate
4、 最原始的一个计划,应该是第一步就是构建模型时的分区 partition by 时,涉及分区字段要注意,避免数据倾斜
5、 涉及 很大的数据量,脚本开发多使用 /*+ DIRECT */
来代替 insert 或者 update ,
最近用这个比较多