评估存储容量
要估计您的Greenplum数据库系统可以容纳多少数据,请使用这些度量方法作为指导。还请记住,您可能希望有额外的空间,用于在每个segment主机上登录备份文件和数据加载文件。
计算可用磁盘容量
要计算Greenplum数据库系统可以容纳多少数据,您必须计算每个segment主机的可用磁盘容量,然后将其乘以Greenplum数据库阵列中segment主机的数量。从segment主机上可用于数据存储的物理磁盘的原始容量(raw_capacity)开始,它是:
disk_size * number_of_disks
考虑文件系统格式化开销(大约10%)和所使用的RAID级别。例如,如果使用RAID-10,则计算将为:
(raw_capacity * 0.9) / 2 = formatted_disk_space
为了获得最佳性能,请不要将磁盘完全填满,而要以70%或更低来运行。因此,请记住以下内容,计算可用磁盘空间:
formatted_disk_space * 0.7 = usable_disk_space
只使用磁盘空间的70%,这允许Greenplum数据库将其余30%的磁盘空间用于同一磁盘上的临时文件和事务文件。如果主机系统具有可用于临时文件和事务文件的单独磁盘系统,则可以指定一个表空间,Greenplum数据库将此表空间用于这些文件。根据磁盘系统的性能,移动文件的位置可能会提高性能。
一旦格式化RAID磁盘阵列并考虑了建议的最大容量(usable_disk_space)之后,您将需要计算实际可用于用户数据的存储量(U)。如果使用Greenplum数据库镜像进行数据冗余,则这将使用户数据的大小增加一倍(2*U)。Greenplum数据库还需要保留一些空间作为活动查询的工作区域。工作空间应约为用户数据大小的三分之一(工作空间= U/3):
With mirrors: (2 * U) + U/3 = usable_disk_space
Without mirrors: U + U/3 = usable_disk_space
临时文件空间和用户数据空间的指南假定了典型的分析工作负载。保留较大的工作区域可以使高度并发的工作负载或需要大量临时空间的查询工作负载受益。通常,通过适当的工作负载管理,可以增加总体系统吞吐量,同时减少工作区使用量。此外,可以通过指定临时空间和用户空间位于不同的表空间上来将它们隔离。
在Greenplum数据库管理员指南中,请参阅以下主题:
计算用户数据大小
与所有数据库一样,将原始数据加载到数据库后,其大小会稍大。大体上,将原始数据加载到数据库中后,磁盘上的原始数据大约大1.4倍,但可能会更大或更小,具体取决于所使用的数据类型、表存储类型、数据库内压缩等。
- 页面开销-将数据加载到Greenplum数据库中时,每个页面分为32KB。每个页面有20个字节的页面开销。
- 行开销-在常规的“heap”存储表中,每行数据都有24字节的行开销。“append-optimized”存储表,每行只有4个字节的开销。
- 属性开销-对于数据值本身,与每个属性值关联的大小取决于所选的数据类型。通常,您想使用最小的数据类型来存储数据(假设您知道列将具有的可能值)。
- 索引-在Greenplum数据库中,索引与表数据一样分布在segment主机上。Greenplum数据库中的默认索引类型是B树。由于索引大小取决于索引中唯一值的数量以及要插入的数据,因此无法预先计算索引的精确大小。但是,您可以使用这些公式大致估计索引的大小。
B-tree: unique_values * (data_type_size + 24 bytes) Bitmap: (unique_values * number_of_rows * 1 bit * compression_ratio / 8) + (unique_values * 32)
计算元数据和日志的空间需求
在每个segment主机上,您还需要考虑Greenplum数据库日志文件和元数据的空间:
- 系统元数据 ——对于每个主机上运行的每个Greenplum数据库segment实例(主实例或镜像实例)或master实例,估计系统目录和元数据约为20 MB。
- 预写日志 ——对于主机上运行的每个Greenplum数据库segment(主实例或镜像实例)或master实例,为预写日志(WAL)分配空间。WAL分为每个64 MB的段文件。WAL文件的数量最多为:
2 * checkpoint_segments + 1
您可以使用它来估算WAL的空间要求。Greenplum数据库实例的默认checkpoint_segments设置为8,这意味着为主机上的每个段或主实例分配1088 MB WAL空间。
- Greenplum数据库日志文件 -每个segment实例和master实例都会生成数据库日志文件,该文件将随着时间的推移而增长。应该为这些日志文件分配足够的空间,并且应使用某种类型的日志滚动工具,以确保日志文件不会变得太大。
- Command Center数据-Command Center使用的数据收集代理与Greenplum数据库实例在同一组主机上运行,并利用这些主机的系统资源。这些主机上的数据收集代理进程的资源消耗极小,并且不会显着影响数据库性能。收集代理所以收集的历史数据,存储在它自己的Command Center数据库(名为gpperfmon),这个数据库位于Greenplum数据库系统内。收集的数据的分布方式与常规数据库数据一样,因此您需要考虑Greenplum segment实例的数据目录位置中的磁盘空间。所需的空间量取决于您要保留的历史数据量。历史数据不会自动被截断。数据库管理员必须设置一个截断策略来维持Command Center数据库的大小。