手把手教您借助GPCC查看表的分布和分区策略

delphi6fans
发布于 2022-5-19 17:29
浏览
0收藏

 

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”的情况。

手把手教您借助GPCC查看表的分布和分区策略-鸿蒙开发者社区
 分区

 

上图中的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”。

手把手教您借助GPCC查看表的分布和分区策略-鸿蒙开发者社区

分区标准(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。

手把手教您借助GPCC查看表的分布和分区策略-鸿蒙开发者社区
 compression列如上图所示,格式为:
type = <压缩类型>
level = <压缩级别>

 

按分区表的大小排序

 

您可能没有注意到:您可以按分区表的大小排序!


只需单击“Table Size”列标题,您就会发现这个功能。


我们认为您可能需要按分区表的大小排序,排序后才会更容易的找到太大的或根本没有使用过的分区。才能进一步采取相应措施,例如拆分大的分区。;)

 

欢迎下载最新的GPCC,并进行更多探索!

 

如果您对如何在GPCC中展示数据有很好的想法,请发送电子邮件至gpcc@pivotal.io 

 

作者简介
 杨茹

Pivotal软件工程师

Greenplum Command Center(GPCC)全栈工程师。毕业于南开大学自动化系,长期从事一线软件开发工作,是GPCC Table Browser功能的核心开发人员之一。

 

文章转自公众号:Greenplum中文社区

分类
标签
已于2022-5-19 17:29:58修改
收藏
回复
举报
回复
    相关推荐