GBase 8a 内存需求评估(一)

本文探讨了在处理大规模数据时GBase集群节点的内存需求,包括参与运算的数据量、中间结果集大小及并发数等因素。针对不同类型的数据库运算提出了具体的配置建议。

复杂应用的内存配置建议

从以下几个方面考量数据库运算过程中单个GBase集群节点(gnode)各算子的内存需求(假定10节点集群):

参与运算的数据量

以一个2亿行的表与3千万行的表进行join运算,并对join运算结果进行group by聚集,最终得到的结果行数为1.5亿行的场景为例,参与运算的数据量为2.3亿行,超过100GB(不含不参与运算的字段),得到的结果集也超过80GB;对于10节点集群,每节点承载的运算数据量超过10GB。

sql执行过程中的中间结果集大小

如两表join生成的hash table的尺寸大小; sql执行过程中生成的临时表的大小;这些中间结果集的大小通常不会小于参与运算的原始数据量。上例场景,假设每个gnode的中间结果集大小也为10GB。

sql并发数

客户的业务通常都要求数据库支撑5~100个不等的并发。

综上,单个集群节点在上述场景下的内存需求为10~20GB,在10个类似sql场景并发,单个gnode的数据库运算内存需求为100GB以上,此外还应为gnode分配40GB以上的内存用于数据缓存。

按照数据库使用操作系统总物理内存60~80%的比例,在上述场景下,建议单服务器的总物理内存为140G/0.8=175G以上。

按照项目工程经验,复杂应用中多以hash join、group by、order by等数据库运算为主;在gnode服务器内存配置为128G~256G,混合型(包含多种数据库运算)复杂应用中, GBase集群的算子buffer大小可如下设置(考虑并发场景,且并发数在10~20之间):

gbase_buffer_distgrby=2G

gbase_buffer_hgrby=4G

gbase_buffer_hj=4G

gbase_buffer_sj=2G

gbase_buffer_sort=4G

gbase_buffer_result=2G

gbase_buffer_rowset=2G

考虑并发场景情况下,还需考虑GBase集群的gbase_parallel_degree、gbase_parallel_max_thread_in_pool参数配置。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值