Greenplum
文章平均质量分 64
foucus、
这个作者很懒,什么都没留下…
展开
-
MatrixDB Mars存储引擎
Mars存储引擎是MatrixDB自研的存储类型。简单测试下其和Greenplum传统的堆表和列存储表的区别。--不同存储引擎对比1、Heap优点:Heap表为传统PostgreSQL数据库提供的存储类型,又称堆表。该类型的表支持大量并发读写、事务、索引等特性。 缺点:表压缩低,查询性能较弱。2、AppendOnly优点:列存储,相较于堆表提供了更高效的I/O和存储,适合于在少量列上计算数据聚集。 缺点:不适合数据会被频繁修改的OLTP场景。3、Mars优点:支持原创 2022-02-08 10:02:08 · 888 阅读 · 0 评论 -
Greenplum query调用函数报错解决方案
我们可能经常会遇到需要在query调用自定义函数的情况,但是在Greenplum中,如果函数中有query,然后又在query中调用该函数则会报错。例子:创建函数iap=# create or replace function f1() returns text as $$declarec1 text;beginexecute 'select info from tt1 limit 1' into c1;return c1;end;$$ language plpgsql;query中原创 2021-06-18 14:14:48 · 1996 阅读 · 0 评论 -
Greenplum行列转换——tablefunc
1、说明行列转换是数据库查询中比较常见的一种需求,在Greenplum这种偏向OLAP场景的数据库中更是比较常见了。那么我们如何在gp中实现行列转换呢?我们可以使用postgresql的tablefunc扩展在gp中来直接实现行列转换的功能。不过在gp中并不像postgresql那样自带tablefunc扩展,因此我们需要将postgresql中的该扩展解压到gp中来使用。2、安装安装前要先根据greenplum的版本选择对应的postgresql版本,例如这里我使用的gp5.23版本,所以这里要先原创 2020-09-09 15:27:25 · 3400 阅读 · 4 评论 -
Greenplum广播与重分布原理详解
Greenplum的执行计划和PostgreSQL基本一致,但是在表关联的时候还是会有区别,因为greenplum中数据不同于pg,greenplum是将数据分布在多个节点上。所以当两表关联时关联列又不是表的分布键时就会出现表的广播和重分布。本文将详细介绍广播和重分布的区别及场景。在此之前,我们需要先了解下在greenplum中表之间分布式关联有哪些类型?表的分布式关联主要分为两大类:1、单...原创 2020-04-22 17:47:54 · 4085 阅读 · 0 评论 -
Greenplum外部表数据加载——gpfdist
Greenplum在数据加载方面有一个明显的优势,就是支持数据的并发加载,gpfdist就是并发加载的工具,在数据库中对应的就是外部表。外部表就是指表的数据存放在数据库之外的数据文件中。外部表是直接在segment上导入数据,相比与其它的ETL工具,因为需要经过GP的单点master(效率较低),这种方式速度会很快。创建外部表语法:CREATE EXTERNAL TABLEDefines...原创 2020-04-22 13:58:04 · 3271 阅读 · 0 评论 -
Greenplum扩容实践
0、说明集群扩容是十分常见的需求,本文演示如何从两节点集群扩容到三节点,扩容前集群状态如下:postgres=# select * from gp_segment_configuration ; dbid | content | role | preferred_role | mode | status | port | hostname | address | ...原创 2020-04-20 14:20:47 · 1793 阅读 · 0 评论 -
Greenplum执行计划
Greenplum执行计划和pg中的类似,但是由于gp是分布式的shared nothing架构,所以执行计划必然和pg还是有些区别。gp中查看SQL的执行计划也是通过explain语句,语法如下:Command: EXPLAINDescription: show the execution plan of a statementSyntax:EXPLAIN [ ANALYZE ...原创 2020-01-20 14:47:53 · 3337 阅读 · 2 评论 -
Greenplum实现nulls first/last改写
在pg中支持nulls first/last的写法,并且因为pg的索引中可以存储null值,所以这种写法还支持索引。而在Greenplum之前的版本中是不支持这种写法的:select * from tbl order by id nulls first; select id, last_value(key) over (partition by gid order by crt_ti...原创 2020-01-20 14:46:56 · 1744 阅读 · 0 评论 -
Greenplum索引使用详解
在pg中,我们会经常使用索引来加速查询,但是在Greenplum中对于索引的依赖却比较低,应该合理的使用。因为在gp中顺序扫描会很快,而索引扫描则是一种随即搜索的模式。Greenplum的数据分布在Segment上,因此每个Segment会扫描全体数据的一小部分来得到结果。通过表分区,要扫描的数据量可能会更少,因此索引使用的场景可能会更少。并且索引通常会增加一些数据库负担,它们使用存储空间并且在...原创 2020-01-20 14:45:40 · 4490 阅读 · 0 评论 -
Greenplum备份恢复
Greenplum作为一个分布式数据库,其备份恢复的方式和pg还是有一些区别。其中gp支持两种模式的备份恢复:并行和非并行。两者的区别在于:并行方式中每台Segment主机都同时将数据写入到自己本地的磁盘存储上。而非并行的方式数据必须通过网络从Segment被发送到Master,然后由master接待你把所有的数据写入它的存储中。因此弊端也很明显:除了把I/O限制在一台主机上之外,非并行备份还...原创 2020-01-20 14:44:23 · 1906 阅读 · 1 评论 -
Greenplum分区表
Greenplum中分区表其目的也是用来避免扫描大表的全部内容,而分区表能够提升查询性能。分区是不会更改数据在segments之间的物理分布,而是对大表进行逻辑上的划分。目前Greenplum只支持range分区和list分区,以及两种分区的组合分区。通过使用create table的partition by子句来创建分区表,然后就会创建一个父表和一系列子表。在内部,Greenplum会在父表和...原创 2020-01-20 14:42:51 · 4718 阅读 · 0 评论 -
Greenplum创建和管理表
Greenplum中创建表和pg中类似,不过区别在于其表中的行会被分布在不用的segment中。我们需要在创建表的时候指定分布策略。gp中的表有一些限制:1、UNIQUE和PRIMARY KEY约束必须和它们所在表的分布键和分区键(如果有)兼容。2、不支持外键,但是语法上允许外键约束,但不会起作用。3、用户在分区表上定义的约束将作为整体应用到分区表上。用户不能在该表的单独的部分上定义约束。...原创 2020-01-20 14:41:06 · 2343 阅读 · 0 评论 -
Greenplum表存储类型
Greenplum中支持行存储和列存储,支持堆表和AO(append only)表。堆表和AO表:1、堆表Greenplum中默认和pg中一样都是使用堆存储表,堆表最适合于较小的表,适合更新、插入较频繁的表,在OLTP类型负载下表现最好。另外堆表的所有变更都会产生REDO,可以实现时间点恢复。但是堆表不能实现逻辑增量备份(因为表的任意一个数据块都有可能变更,不方便通过堆存储来记录位点)。2...原创 2020-01-20 14:39:48 · 2791 阅读 · 0 评论 -
Greenplum创建表空间
Greenplum中创建表空间的方式和pg中有较大不同,因为gp中有表空间(tablespace)和文件空间(filespace)两个概念。我们可以这样去理解,因为在gp中master和segment节点中数据文件肯定得存放在不同的位置,所以我们得想办法将所有的文件系统位置的文件全部都表示起来,因此就引入了文件空间这样一个概念——Greenplum数据库中所有部件所需的文件系统位置集合被称作一个...原创 2020-01-20 14:38:23 · 2174 阅读 · 0 评论 -
Grennplum源码安装
0、说明以在同一台主机上的一个master节点和一个segment节点为例来说明安装方式。1、安装前准备工作所有节点执行:[root@test180 ~]# yum -y install rsync coreutils glib2 lrzsz sysstat e4fsprogs xfsprogs ntp readline-devel zlib zlib-devel openssl open...原创 2020-01-20 14:36:20 · 1586 阅读 · 0 评论