如何评估Greenplum master 空间以及segment元数据占用的空间.

Greenplum master节点是用来存储元数据的,包括 :
序列,表,临时表,分区,函数,视图,类型,操作符,规则,触发器 等。

segment 上也会存储部分元数据,
序列,表,临时表,函数,视图,类型,操作符,规则,触发器 等。

master比segment更多的信息包括:
分布策略,分区表,以及一些特殊的配置元数据。

gp_distribution_policy
pg_partition
pg_partition_encoding
pg_partition_rule
pg_statistic

仅仅从元数据的角度来看,master比segment存储的信息略多一些,主要是表的分布策略和表分区的定义。

如何评估master的空间?
主要考虑几个因素 :
.1. 定义多少个对象
序列对应的元表: pg_class , pg_statistic, pg_attribute 平均每个序列一条记录
10万个序列,约占用30万条元数据。

表对应的元表: pg_class (2), pg_statistic ( 64, only on master ) , pg_attribute ( 64 ) ,gp_distribution_policy (1)。 (有变长字段,会新增TOAST元数据)
1000万张表(含分区表),约占用14亿条元数据。

临时表对应的元表: pg_class (2), pg_statistic ( 64, only on master ) , pg_attribute ( 64 ) 。 (有变长字段,会新增TOAST元数据)
1万张临时表,约占用130万条元数据。

分区: pg_partition (每个表1条), pg_partition_encoding (一般0), pg_partition_rule (每个分区表一条)
2万主表,900万个分区表,约占用902万条元数据。

函数:pg_proc (每个函数1条)
10万函数,约占用10万条元数据。

视图:pg_class
10万视图,约占用10万条元数据。

类型:pg_type
1万类型,约占用1万条元数据。

操作符:pg_operator, pg_op...
1万操作符,约占用5万条元数据。

规则:pg_rewrite
1万规则,约占用1万条元数据。

触发器:pg_trigger
1万个触发器,约占用1万条元数据。

.2. 是否使用临时对象
临时表,会产生元数据,会话关闭后,自动释放,从而产生垃圾,可能导致元数据膨胀。

.3. 膨胀率
不断的新增,删除表。或修改字段定义。会导致元数据变化,可能导致元数据膨胀。
特别是存在长事务时,由于只能回收到该事务起点以前的事务产生的垃圾,这样容易造成垃圾积累。
假设膨胀率为30%,正常情况下比这个要少点。

如何推算master节点需要多少空间?
首先需要评估每个元表的平均记录大小, 单位字节:

postgres=# select relname,relkind,round((relpages::numeric81024)/reltuples::numeric,2) from pg_class where relpages<>0 and reltuples<>0 and relkind='r' and reltuples>100 order by 1;
           relname           | relkind |  round
-----------------------------+---------+---------
 gp_distribution_policy      | r       |   40.96
 gp_fastsequence             | r       |   47.63
 gp_persistent_relation_node | r       |   33.57
 gp_relation_node            | r       |   39.77
 pg_aggregate                | r       |   60.68
 pg_amop                     | r       |   29.20
 pg_amproc                   | r       |   31.51
 pg_appendonly               | r       |  163.84
 pg_attrdef                  | r       |  160.63
 pg_attribute                | r       |   93.85
 pg_attribute_encoding       | r       |   83.22
 pg_cast                     | r       |   30.57
 pg_class                    | r       |  137.23
 pg_constraint               | r       |  548.95
 pg_conversion               | r       |   62.06
 pg_depend                   | r       |   21.42
 pg_description              | r       |   17.75
 pg_index                    | r       |   77.14
 pg_inherits                 | r       |   42.67
 pg_opclass                  | r       |   58.10
 pg_operator                 | r       |   48.19
 pg_partition_rule           | r       |  341.33
 pg_proc                     | r       |   50.83
 pg_rewrite                  | r       | 1079.57
 pg_stat_last_operation      | r       |  138.51
 pg_statistic                | r       |   78.21
 pg_type                     | r       |   93.19
 pg_window                   | r       |   28.44
 sql_features                | r       |   25.24
 supplier                    | r       |   38.89

其次,需要告知在集群中有多少元数据。
假设用户需要在GP集群中创建 :
10万个序列,1000万张表(包含分区表),同时存在1万张临时表,10万函数,10万视图,1万自定义类型,1万自定义操作符,1万条规则,1万个触发器。
需要
约14.1090亿条元数据,平均每条元数据假设200字节(实际可能更小,参考各个元表的relpages81024/reltuples 得到的一个参考值),约260GB。
算上膨胀率,Master约占用空间338GB空间。

segment的元数据大小评估:
需要扣除

gp_distribution_policy
pg_partition
pg_partition_encoding
pg_partition_rule
pg_statistic

上面的例子,约比master少7亿数据。约占170GB元数据空间。

时间: 2024-09-13 16:59:36

如何评估Greenplum master 空间以及segment元数据占用的空间.的相关文章

请教,什么情况下rds master 和replica 占用的空间不一样,没有lag?

问题描述 请教,什么情况下rdsmaster和replica占用的空间不一样,没有lag? 解决方案 解决方案二:看一下两台实例的cloudwatch的BinaryLogDiskUsage(MB)指标

itpub坛友问题--基于普通表或分区表创建索引,会占用临时表空间及何时回收临时表空间

个人简介: 8年oracle从业经验,具备丰富的oracle技能,目前在国内北京某专业oracle服务公司从事高级技术顾问.        服务过的客户:           中国电信           中国移动           中国联通           中国电通           国家电网           四川达州商业银行           湖南老百姓大药房           山西省公安厅           中国邮政           北京302医院         

如何Shrink Undo表空间,释放过度占用的空间_oracle

环境:OS:Red Hat Enterprise Linux AS release 4 (Nahant)DB:Oracle Database 10g Enterprise Edition Release 10.2.0.1.0 - Production 一台Oracle10gR2数据库报出如下错误:ORA-1653: unable to extend table SYSMAN.MGMT_SYSTEM_ERROR_LOG by 8 in  tablespace SYSAUX ORA-1653: un

重建undotbs释放过度占用的空间

重建undotbs释放过度占用的空间   数据库的undotbs占用空间太大,磁盘空间有点紧,先把undotbs重建一下. 创建新的UNDO表空间 SQL> CREATE SMALLFILE UNDO    2       TABLESPACE "UNDOTBS2"    3       DATAFILE '/sysion/oracle/oradata/UNDOTBS2A.dbf' SIZE 1000M    4       AUTOEXTEND    5       ON NE

NETAPP的Deduplication占用的空间

昨天通过模版新部署了一台20GB的虚机,部署前可用空间77GB,部署后可用空间57GB.晚上Deduplication运行后,今早起来发现可用空间重新变成了75GB.也就是这台20GB的虚机只占用了2GB空间.这2GB空间还是因为内存映像文件占用的. So amazing!

Win8系统Recovery文件夹占用内存空间能不能删除?

Win8系统Recovery文件夹占用内存空间能不能删除?   Win8系统C盘的Recovery是什么文件夹? 在Win8系统/Win8.1系统C盘中有一个隐藏的Recovery文件夹,该文件夹主要用于存放恢复系统用的恢复环境文件,文文件夹中有两个文件:boot.sdi.Winre.wim,Boot.sdi文件作为加载Winre.Wim镜像虚拟磁盘,而Winre全称Windows Recovery Environment,类似的有WinPE(Windows PreInstallation En

win7系统自带的软件很臃肿占用内存空间如何删除

  win7系统自带的软件很臃肿占用内存空间如何删除          1.准备自制修改软件,Imgaex备份还原软件(下载地址)以及UltraISO(下载地址); 2.用WinRAR打开Win7的ISO文件,再打开"sources"文件夹,解压其中的"install.wim"文件; 3.运行"Imgaex备份还原软件",选择"删除镜像中的镜像",然后打开刚才解压的wim文件. 4.一般装Win7都只装旗舰版或专业版,不用的版

win7回收站清理不干净占用系统空间如何解决

  win7回收站清理不干净占用系统空间如何解决         具体方法如下: 1.使用快捷键"win+r"进入运行界面,输入"cmd",回车即可; 2.在窗口中输入"chkdsk d:/f" ,回车,(有几个盘符可以输几次,输完回车再输下一个); 3.回车后会提示"是否要强制卸载该卷?(Y/N)",输入Y.

Win7系统Installer文件夹占用内存空间太大怎么办

  Installer文件夹是什么? Installer文件夹是Windows Installer 服务的缓存文件夹,用于防止MSI应用程序安装包的缓存数据文件,系统中安装的msi安装格式的程序越多,它的体积就越大,对于硬盘空间有限的情形(例如为虚拟机分配的虚拟硬盘.固态硬盘)来说,鸭梨山大. Installer文件夹可以删除吗? Installer 文件夹下的文件不能随便删除.该文件夹的目的是缓存基于MSI安装包的应用程序安装数据.在应用程序安装.更新.删除时,其中的数据可用于确认旧版本的文件