手把手教您借助GPCC查看表的分布和分区策略
Greenplum是一个大规模并行处理数据库,由一个master和多个segment组成。在之前推送的文章《Greenplum数据分布和分区策略》中,我们介绍了在Greenplum上,数据是按照什么样的分布策略分布于各个segment上。
既然表的这些分布和分区策略如此重要,您可能会问:我们如何监控这些情况,以及及早发现异常。Greenplum Command Cente(GPCC)可以很好的解决这个问题,今天我们将为您详细解答。
在最新的GPCC中, 您可以轻松查看表的分布和分区策略。
为了有更深入的理解,让我们来看一个例子。
首先,让我们创建一个表:
CREATE TABLE sales1 (trans_id int, date date, amount decimal(9,2), region text)
DISTRIBUTED BY (trans_id)
PARTITION BY RANGE (date)
SUBPARTITION BY LIST (region)
SUBPARTITION TEMPLATE
( SUBPARTITION usa VALUES ('usa'),
SUBPARTITION asia VALUES ('asia'),
SUBPARTITION europe VALUES ('europe'),
DEFAULT SUBPARTITION other_regions)
( START (date '2011-01-01') INCLUSIVE
END (date '2012-01-01') EXCLUSIVE
EVERY (INTERVAL '1 month'),
DEFAULT PARTITION outlying_dates );
向左滑动查看全部内容
分布策略
在GPCC的table详情页上,“Distributed By” 字段表示其分布策略,如果采用了哈希分布策略,则分布键将显示在括号中。
当然, 您也可能遇到显示“Randomly”或 “Replicated”的情况。
分区
上图中的Partitions字段显示table有多少个分区(包括所有级别的分区)。
要查看其所有分区表,您可以单击 “Show” 链接,分区信息将从页面右侧飞出。
介绍
到目前为止,最多只显示100个分区表。(以后会显示更多分区)
默认情况下,分区表按创建时间排列。因为我们认为您可能更关心最新创建的分区。
具体来说,下图中的第一行的“sales_1_prt_13_2_prt_other_regions”表是最新创建的,其次是“sales_1_prt_13_2_prt_europe”,“sales_1_prt_13_2_prt_asia”和“ sales_1_prt_13_2_prt_usa” 表,第四行是在更早之前创建“sales_1_prt_13”表。
你是否注意到 ,有些行的背景颜色与其它行有所不同?
是的,为了清楚起见,我们将叶子分区表(不再切分为更小分区的表)的背景设置为白色,而其他非叶子表则设置为灰色,以便轻松区分它们。
只有叶子分区保存实际数据,因此非叶子分区将没有“Table Size”。
分区标准(Criteria)
上图的“Partition criteria”列告诉我们分区数据是如何存储的。
如果在这个列中有好几行,那靠上的行是此分区的祖先分区的criteria。
例如, sales_1_prt_13_2_prt_europe 表:
- date = [2011-12-01,2012-01-01)
首先通过“date”列进行分区(分区类型为RANGE),范围从2011-12-01(包含)到2012 -01-01(不包含),这个是其父分区表(sales_1_prt_13) 的criteria; - region = europe
然后按“region”列进行分区(分区类型为LIST),如果某行数据的region字段为2011-12-04,而region为Europe,则它属于此表 sales_1_prt_13_2_prt_europe。
有两点要注意:
- date = [2011-12-01,2012-01-01)
“ [”表示包含,“)”表示不包含,与数学开/闭区间概念非常相似。 - region = DEFAULT
如果您看到加粗的 DEFAULT 单词, 则表示此分区表是默认分区。
存储和压缩
现在让我们看一下“Storage”(存储)和“Compression”(压缩):
存储可以是以下几种中的一种:
- AO
- AO/CO
- Heap
- Virtual
- External
当表的存储类型为AO或AO/CO,我们称这个表是”appendonly”的。
只有当一个表是appendonly的,才可能有blocksize和compression。
compression列如上图所示,格式为:
type = <压缩类型>
level = <压缩级别>
按分区表的大小排序
您可能没有注意到:您可以按分区表的大小排序!
只需单击“Table Size”列标题,您就会发现这个功能。
我们认为您可能需要按分区表的大小排序,排序后才会更容易的找到太大的或根本没有使用过的分区。才能进一步采取相应措施,例如拆分大的分区。;)
欢迎下载最新的GPCC,并进行更多探索!
如果您对如何在GPCC中展示数据有很好的想法,请发送电子邮件至gpcc@pivotal.io
作者简介
杨茹
Pivotal软件工程师
Greenplum Command Center(GPCC)全栈工程师。毕业于南开大学自动化系,长期从事一线软件开发工作,是GPCC Table Browser功能的核心开发人员之一。
文章转自公众号:Greenplum中文社区