GBase 8a
性能调优
文章

gbase_heap_data参数常见使用问题

发表于2024-12-30 20:08:0460次浏览2个评论

1,问题现象描述

执行sql当出现有如下报错时,说明gbase_heap_data内存相关参数不够用了。

(GBA-01X-700)GBase general error: ******heap usaage has exceed MemoryLimit,*****

2,参数说明

gbase_heap_data 主要设计用途是缓存数据(DC),应分配最多的内存。
gbase_heap_large 用于管理不频繁申请、释放的内存。
gbase_heap_temp 用来分配较为琐碎的和小块儿的临时内存,较少使用。
gbase_memory_pct_target 设置内存的可用比例,默认 0.8。

参数上限:

(gbase_heap_data + gbase_heap_large + gbase_heap_temp ) <= total memory *gbase_memory_pct_target

简单来说就是建议这个三个heap参数加起来要小于总内存的80%

3,这里着重说明一下gbase_heap_data参数
 功能:
这个参数用于管理数据包缓存堆的大小。
这是一个非常重要的参数,合理的参数设置可以从很大程度上提高数据库的查询性能。
将 gbase_heap_data 设置的很大,可以大大改善数据库的查询性能,但过大的gbase_heap_data 会 导 致 操 作 系 统 的 不 稳 定 , 因 此 , gbase_heap_data + gbase_heap_temp + gbase_heap_large + gbase_buffer_insert 不能超过系统总内存的80%,否则启动时会报错。
该参数的默认值是由系统自动评估计算出来的,不是固定的值。默认值为物理内存*(6/16),单位:字节。
修改该参数(过大)会影响内存检测的结果,可能会导致节点进程启动终止,内存检测请参考 gbase_memory_pct_target 参数。

4,报错问题处理:

当出现1中gbase_heap_data参数报错问题时,如何处理有一下几点:

1)优先检查该表数据量是否合理,是否属于业务正常范围

2)优化大字段问题,比如test varchar(1000)varchar(4000)等,需要重新评估优化大字段问题,选用合理长度。

3)查询字段是否可以减少,减少打开表的缓存申请

4)排查数据是否存在倾斜问题

5)查看gbase_heap_data参数是否有仍有调整空间,将该参数调大

6)评估业务情况是否需要进行扩容

评论

登录后才可以发表评论
崔哥发表于 5个月前
墙角数枝梅,凌寒独自开。遥知不是雪,为有暗香来。
用户头像
levvel发表于 2个月前
海纳百川有容乃大,壁立千仞无欲则刚