GBase 8a最佳实践(二)资源评估

原文链接:

https://www.gbase.cn/community/post/3907

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

1.1磁盘存储空间评估

GBase 集群存储空间需求的计算按照业务系统的数据量大小、压缩算法的选择、集群副本数的选择进行评估。业务系统数据量通常包括以下几个方面:

  • 历史数据量;
  • 增量周期及每周期的增量大小;
  • 数据存储周期,及全周期的数据总量;
  • 数据量增长率及存储空间预留;

举例

充分考虑上述几个方面的情况,假设某业务系统的全周期的总数据量为 30TB, GBase 集群物理磁盘容量的计算方法为:
最小磁盘空间需求 MDSR (Minimum Disk Space Requirements)=  总数据量×数据 库及相关工作空间因子×副本选项因子×RAID 因子×操作系统和文件系统因子× 数据库压缩因子。
具体参数说明

  • 总数据量:
    (历史数据+增量数据)*(1+数据增长率)
    例如:数据生命周期内假设总数据量估算值为 30TB。

  • 数据库及相关工作空间因子:
    需要考虑系统缓冲区、工作空间、流水、次索引、临时表等因素。对于不同的应用 而言, 此因子要求不同, 一般为 1.2~2.0,即为 100GB  的用户数据空间保留 20GB~100GB 的数据库管理和工作空间。例如:这里根据工程经验选取该因子的值为 1.5。

  • 副本选项因子:
    副本是 GBase 集群的数据高可用机制的基础。当采用副本时,GBase 集群将自动为 每条数据记录在不同节点所管理的物理磁盘上保持多份拷贝。这样,当某节点的磁盘系统(含 RAID 保护)发生故障时,客户应用程序仍能通过访问故障磁盘所包含的数据所对应的副本继续工作。GBase 集群最多允许使用2 个副本,即同一份数据 在整个集群中有3 份拷贝。使用2个副本时,副本选项因子为3;使用1个副本时, 副本选项因子为2;不使用副本时,副本选项因子为 1。考虑到系统数据可靠性要求,建议选择副本因子为2

  • RAID 因子:
    根据实际项目工程经验,建议:
    1)操作系统使用独立的 raid,如两块 600GB 的 10K SAS 盘做 raid1 用于安装操作 系统;
    2)在 raid5 配置下,建议在磁盘数量 n 大于 10 情况下,采用raid50 方式,即建立 两个 raid5 后再将两个 raid5 做成 raid0;
    3)在 raid5 配置下,建议设置热备盘,使用同规格的一块硬盘作为 raid5 的热备;
    举例,13 块 600GB  15K SAS 硬盘,每 6 块硬盘做成一个 raid5,然后两个 raid5 做 raid0;一块单独硬盘作为热盘。不考虑操作系统的磁盘开销及热盘,GBase 集群的 RAID 因子:
    一个 RAID5 情况下,RAID 因子等于 n/(n-1); 两个 RAID5 情况下,RAID 因子等于 n/(n-2)。
    假设系统选用 n=12 的 RAID50 方案,RAID 因子为 12/10。

  • 操作系统和文件系统因子:
    Linux 操作系统需要的软件安装和工作存储空间,以及 GBase 集群在管理用户数据 时在 Linux 文件系统中需开销一部分磁盘空间。
    根据 GBase 实际使用经验,此因子为 1.2-1.6。
    如果对性能和安全性要求高建议使用 1.6,任何场景不能低于 1.2。

  • 数据库压缩因子
    GBase 集群提供数据压缩技术,可以对用户数据进行压缩存储,从而减少所需要的物理存储空间,同时可以减少数据库工作时的 I/O 次数,进一步提高性能。此压缩因子的经验值为 10%~70%。通常使用 55 压缩算法的压缩比为 1:3 至 1:5 之间,这里取下限,因此压缩因子为 33%。
    这样,系统最小磁盘空间需求的计算公式可以归纳为:
    最小磁盘空间需求 MDSR (Minimum Disk Space Requirements)
    =  总数据量 × 1.5×2×12/10×1.2×33%
    =  总数据量 × 1.4256。
    综合描述计算方法,总数据量为30TB 的系统需要配置的磁盘容量为: MDSR = 30TB * 1.4256 = 42.768TB。

1.2集群网络带宽估算

GBase 集群需要高速网络来保证整体性能。建议采用万兆网络甚至 25G 网络

1.3磁盘 I/O 需求评估

磁盘配置需考虑两方面:一方面是保障磁盘的高可用性,另一方面是为了保证更高 的 I/O 性能来满足磁盘 I/O 需求。
磁盘 I/O 性能需求的评估方法以举例形式说明如下:
某电信运营商的营销分析系统,其用户数(电话号码)为 3000 万,每个用户的数据 为 10k  ,每次即席复杂查询时可过滤 90%的数据,需要 I/O 读取的数据量为 3000 万*10k*10%=30G。

该营销分析系统的磁盘 I/O 需求计算依赖以下几个方面:

  • 数据库并发数为 20;
  • 平均单位即席复杂查询需访问的数据量为 30G;
  • 平均单位即席复杂查询耗时 180 秒;

测算 I/O 吞吐为:A*B/C=20*30*1024/180=3410M/s,考虑系统 IO 能力预留 30%, 则磁盘 I/O 性能需求评估为 3410/70%=4800M/s。
在 GBase 集群节点的读写 I/O 性能为200M/s 的情况下,需要搭建24 个节点的 GBase 集群来满足该营销分析系统的 I/O 需求;假设该营销分析系统的集群节点数在设计 初期设定为 12 个,则要求服务器配备 I/O 读写性能达到 400M/s。

注:这里的 I/O 读写性能 200M/s 和 400M/s 是指在 20 并发下,随机访问的读写性能。

1.4内存需求评估

1.4.1复杂应用内存配置建议

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

  • 参与运算的数据量
    以一个 2 亿行的表与 3 千万行的表进行join 运算,并对join 运算结果进行 group by 聚集,最终得到的结果行数为 1.5 亿行的场景为例。参与运算的数据量为 2.3 亿行, 超过 100GB(不含不参与运算的字段),得到的结果集也超过 80GB;对于 10 节点 集群,每节点承载的运算数据量超过 8GB,保守评估每节点运算数据量为 10GB。
  • sql 执行过程中的中间结果集大小
    如两表 join 生成的 hash table 的尺寸大小; sql 执行过程中生成的临时表的大小; 这些中间结果集的大小通常不会小于参与运算的原始数据量。延用上例场景,假设 每个 gnode 的中间结果集大小也为 10GB。
  • sql 并发数
    客户的业务通常都要求数据库支撑 5~100 个不等的并发。
  • 总结
    综上,单个集群节点在上述场景下的内存需求为 10~20GB,在 10 个类似 sql 场景 并发,单个 gnode 的数据库运算内存需求为 100GB 以上,此外还应为 gnode 分配 20GB 以上的内存用于数据缓存。

按照数据库使用操作系统总物理内存 60~80%的比例,在上述场景下,建议单服务 器的总物理内存为 120G/0.8=150G 以上。
按照项目工程经验,复杂应用中多以 hash join、group by、order by 等数据库运算为 主;在 gnode 服务器内存配置为 128G~200G,混合型(包含多种数据库运算)复杂 应用中, 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 参数配置。

1.4.2简单查询类的内存配置建议

主要应用场景为电信行业的话单查询业务。
针对该类型场景的内存评估,主要依赖于热数据的比例和数据量。热数据的总量即 为内存需求量。

以某运营商的云话单为例,以月表方式存储 6+1 个月的历史数据;每天的数据量为 600GB ;一个月的总数据量为 600GB/天 * 30 天/月 = 18T,全数据生命周期内的总 数据量为 600GB/天 * 30 天/月 * 7 个月 = 126T;

云话单查询主要以当月数据查询为主,可定义当月的话单数据即为热数据,假设话 单查询的字段个数只占总字段个数的 1/3,则热数据的总量约为 18TB/3=6TB,即在 最理想情况下 GBase 集群需要 6TB 的内存缓存全部热数据。

GBase 集群的列存储特性所具备的高压缩比、智能索引,以及配合高性能的磁盘I/O, 可以在减少对大内存的依赖的情况下,满足高性能的查询要求。根据项目经验,内 存缓存 50%左右的热数据即可满足云话单的查询性能要求。即GBase 集群的总体内 存需求为 6TB*50%=3TB,按照数据库服务器内存利用率为 60%~80%计算,推荐 GBase 集群的总内存为 3TB/0.8=3.75TB;假设集群的节点个数为 15,则每 GBase 集 群节点的内存配置为 3750GB/15=250GB。

注:如果服务器内存有限,且应用场景对性能要求不高,可以参考《GBase 8a最佳实践(二)性能调优》文章中内存参数配置建议,控制每个节点最大使用内存数量。

 原文链接:

https://www.gbase.cn/community/post/3907

更多精彩内容尽在南大通用GBase技术社区,南大通用致力于成为用户最信赖的数据库产品供应商。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值