数仓性能调优:如何进行函数下推
摘要:本文主要描述下函数在满足特征的前提下可以把函数属性定义为下推属性。
本文分享自华为云社区《GaussDB(DWS)性能调优:函数下推》,作者:譡里个檔 。
DWS作为MPP架构的数仓产品,其性能优势主要在分布式计算上。默认情况下,DWS为了保证结果的正确性,自定义函数默认属性是不下推的,这会导致计算不下推,从而导致比较验证的性能问题。本文主要描述下函数在满足特征的前提下可以把函数属性定义为下推属性。
在展开介绍之前,我们先介绍一下DWS里面函数的几个属性
易变属性
下推属性
查询自定义的不下推函数
SELECT oid::regproc AS proname, (pg_get_functiondef(oid)).definition FROM pg_proc WHERE proshippable = false AND oid > 16384;
总结
函数下推要首先满足以下
- 函数的易变属性为IMMUTABLE和STABLE
- 函数的下推属性设置为SHIPPALE
可以在函数定义的时候指定SHIPPALE属性,可以通过ALTER语句修改函数的下推属性

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
ConcurrentHashMap源码,看我这篇就够了
持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第5天,点击查看活动详情 思考:HashTable是线程安全的,为什么不推荐使用? HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进行读写时都去竞争一把锁,导致效率非常低下。 1 ConcurrentHashMap 1.7 在JDK1.7中ConcurrentHashMap采用了数组+分段锁的方式实现。 Segment(分段锁)-减少锁的粒度 ConcurrentHashMap中的分段锁称为Segment,它即类似于HashMap的结构,即内部拥有一个Entry数组,数组中的每个元素又是一个链表,同时又是一个ReentrantLock(Segment继承了ReentrantLock)。 1.存储结构 Java 7 版本 ConcurrentHashMap 的存储结构如图: ConcurrnetHashMap 由很多个 Segment 组合,而每一个 Segment 是一个类似于 HashMap 的结构,所以每一个 Ha...
- 下一篇
EasyTrans 2.0.6 发布,让您少写 30% 的多表 sql
更新内容: 添加JDK17 支持 全局翻译开启的时候,可以使用@IgnoreTrans标记某个方法不用翻译 优化引用,解决很多项目的pom依赖冲突问题。 新增@TransDefaultSett 注解,可以配置PO的默认翻译字段,别名,数据源,唯一键等。 支持的 ORM 框架: 1、Mybatis Plus 2、JPA 3、 TK Mybatis 4、BeetlSQL 组件介绍: 表里我们经常存放字典码,外键 。给前端展示的时候要展示字典描述 (比如 sex 0 代表男),外键要显示 title/name (如 userid 1 要翻译为张三)。字典比较简单,很多项目都直接交给前端翻译,但是外键翻译是必须要后台来做的,最常见的做法就是 表 join ,这样又要自己写 sql 比较麻烦。使用 Easy Trans,只需要一个注解就可以搞定数据翻译。 支持的场景: 字典翻译 把 sex 0 翻译为男 普通外键翻译 / 唯一键翻译 框架使用 mp/jpa 能力自动帮你去执行 sql 根据外键查询 name/title 并且 set 到你的 vo 字段上 跨微服务翻译 比如...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- SpringBoot2全家桶,快速入门学习开发网站教程
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- Eclipse初始化配置,告别卡顿、闪退、编译时间过长
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- 2048小游戏-低调大师作品
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS7,8上快速安装Gitea,搭建Git服务器
- CentOS6,CentOS7官方镜像安装Oracle11G
- CentOS关闭SELinux安全模块