linux分区gp,greenplum下分区表的缺陷之处

gp版本:4.1.0.0

在海量数据库中分区表是我们经常使用的技术,这样可以解决一些性能问题。在使用过greenplum的分区表和mysql的分区表技术后,发现oracle中分区表的操作和性能还是有很大优势的,尤其是到了11g以后,而且在字典表的管理方面,前两者与oracle还是不在同一个层次上,相差太远,当然这也与greenplum是基于postgre有关,毕竟是开源的,mysql也一样。不过,即便是这样,前两者还是有很大用处的,只不过用之前,一定要清楚如何在这些数据库中利用好分区技术,这样才能规避一些将来会面临的问题。

在guide中,greenplum一直强调支持任意组合的分区,支持n级子分区,但是从不提如何正确使用它们,把使用的好坏都推给使用者,总觉得这样有点推卸责任的意思,要么就是将调整优化的部分留给support人员,这样还能赚点money。

026.gif

说点正题,虽然greenplum支持任意组合以及n级子分区,但我估计没多少会真这么用的,有个2级、3级就应该不错了,因为级别越多,将来的分区个数就会成倍增长,而就我个人而言(经过一些测试),觉得单表的分区个数还是控制在100个以内为好,一旦单表的分区个数达到几百个,在访问这个表(空表)时,时间就让你无法接受了(用惯了oracle的都会这么觉得),即便用where条件将该表的查询限定在单个分区,时间也是很“可观的”,可是100个分区一般情况下是不够用的,这就只有借助greenplum的特性(并行的海量数据访问)来弥补,也就是将原来数据库中多个数据量不是很大的分区合并成一个分区,以减少该表的分区个数。

还有一个常见的问题,就是在oracle中我们经常会使用 truncate partition\ drop partition 来进行分区操作,greenplum的手册中也明确写了“支持”这样的命令,但是有前提的,下面我举两个例子:

create table t(

a timestamp without time zone,

b numeric,

c numeric,

d numeric

) WITH (appendonly=true,orientation=column,compresstype=zlib,COMPRESSLEVEL=5)

distributed randomly

partition by range(a)

subpartition by list(b)

SUBPARTITION TEMPLATE(

subpartition p0 values (10),

subpartition p1 values (20),

subpartition p2 values (30),

subpartition p3 values (40),

subpartition p4 values (50)

)

( START (date '2011-01-01') INCLUSIVE

END (date '2011-01-06') EXCLUSIVE

EVERY (INTERVAL '1 day'));

在这个t表中,一级分区没有指定partitionname,由系统自动命名,二级分区已经命名了,这样写建表语句的好处就是简单,由自动自动轮训创建分区了,但是带来的代价却是不可避免的,如下:

执行 alter table t alter partition xxxx truncate partition p0; 时,我不知道 xxxx 那应该写啥,写 1 这肯定不行:

10037372_201109141629321.jpg

alter table t alter partition xxxx drop partition p0; 与上边一样,经过字典表的查找,最终发现这样建表一级分区没有partitionname(oracle可以查到系统自动创建时所带的name),如下:

10037372_201109141632151.jpg

此时,只能用 for(rank(n)) ,如

alter table t alter partition for(rank(1)) truncate partition p0; / alter table t alter partition for(rank(1)) drop partition p0;

第二个例子:

create table tt(

a timestamp without time zone,

b numeric,

c numeric,

d numeric

) WITH (appendonly=true,orientation=column,compresstype=zlib,COMPRESSLEVEL=5)

distributed randomly

partition by range(a)

subpartition by list(b)

SUBPARTITION TEMPLATE(

subpartition p0 values (10),

subpartition p1 values (20),

subpartition p2 values (30),

subpartition p3 values (40),

subpartition p4 values (50)

)

(

PARTITION c0 START ('2011-01-01 00:00:00'::timestamp without time zone) END ('2011-01-02 00:00:00'::timestamp without time zone),

PARTITION c1 START ('2011-01-02 00:00:00'::timestamp without time zone) END ('2011-01-03 00:00:00'::timestamp without time zone),

PARTITION c2 START ('2011-01-03 00:00:00'::timestamp without time zone) END ('2011-01-04 00:00:00'::timestamp without time zone),

PARTITION c3 START ('2011-01-04 00:00:00'::timestamp without time zone) END ('2011-01-05 00:00:00'::timestamp without time zone),

PARTITION c4 START ('2011-01-05 00:00:00'::timestamp without time zone) END ('2011-01-06 00:00:00'::timestamp without time zone)

)

全部由自己指定,再来看字典表:

10037372_201109141641271.jpg

此时,一级分区的partitionname已经存在了,我们可以使用如下命令了:

10037372_201109141642491.jpg

alter table tt alter partition c0 truncate partition p0; /alter table tt alter partition c0 drop partition p0;

以上是我的一点点个人总结。

Greenplum 之前是一家总部位于美国加利福尼亚州,为全球大型企业用户提供新型企业级数据仓库(EDW)、企业级数据云(EDC)和商务智能(BI)提供解决方案和咨询服务的公司。目前 Greenplum 已经归属 Pivotal。 Greenplum DB 号称是世界上第一个开源的大规模并行数据仓库,最初是基于 PostgreSQL,现在已经添加了大量数据库方面的创新。Greenplum 提供 PD 级别数据量的强大和快速分析能力,特别是面向大数据方面的分析能力,支持大数据的超高性能分析查询。 GreenPlum 主要特性: 大规模并行处理架构 高性能加载,使用 MPP 技术,提供 Petabyte 级别数据量的加载性能 大数据工作流查询优化 多态数据存储和执行 基于 Apache MADLib 的高级机器学习功能 Greenplum 采用 Apache 协议开源之后,加上之前的 HAWQ,PostgreSQL 以及 PostGIS,完全可以构建一体化的 PostgreSQL 企业数据架构。 Greenplum的架构采用了MPP(大规模并行处理)。在 MPP 系统中,每个 SMP 节点也可以运行自己的操作系统、数据库等。换言之,每个节点内的 CPU 不能访问另一个节点的内存。节点之间的信息交互是通过节点互联网络实现的,这个过程一般称为数据重分配(Data Redistribution) 。与传统的SMP架构明显不同,通常情况下,MPP系统因为要在不同处理单元之间传送信息,所以它的效率要比SMP要差一点,但是这也不是绝对的,因为 MPP系统不共享资源,因此对它而言,资源比SMP要多,当需要处理的事务达到一定规模时,MPP的效率要比SMP好。这就是看通信时间占用计算时间的比例而定,如果通信时间比较多,那MPP系统就不占优势了,相反,如果通信时间比较少,那MPP系统可以充分发挥资源的优势,达到高效率。当前使用的 OTLP程序中,用户访问一个中心数据库,如果采用SMP系统结构,它的效率要比采用MPP结构要快得多。而MPP系统在决策支持和数据挖掘方面显示了优势,可以这样说,如果操作相互之间没有什么关系,处理单元之间需要进行的通信比较少,那采用MPP系统就要好,相反就不合适了。 标签:Greenplum
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值