GBase 8a
性能调优
文章

gbase 8a 执行报错内存不足:return NULL in alloc

发表于2024-10-11 14:48:19209次浏览3个评论

1. 报错内容如下图所示

2. Gbase 8a 内存分配方式

当数据库启动时,gbase_heap_data,gbase_heap_large ,gbase_heap_temp三个参数控制这对应的堆栈内存,在达到这三个参数控制的的值之前,一经分配则不会释放,且这些值是按照物理内存的10/16=62.5%评估,比例是6:3:1, 等同于 6/16、 3/16 和 1/16。并且这些值不能超过 (物理内存) * gbase_memory_pct_target(默认为0.8)。

3. 运行报错分析

当一条sql在执行时需要申请更多的内存,当申请的值大于 (物理内存) * gbase_memory_pct_target - gbase_heap_data - gbase_heap_temp - gbase_buffer_insert  时,即会以上错误。

4. 运行报错分析,解决方式

① 有限考虑优化sql,避免执行计划产生过多的复制表,使sql使用更少的内存。

② 如无法优化,加大数据库所在服务器内存。

③ 执行对应sql前执行release cache;refresh tables; set gbase_parallel_degree = ' ';释放可释放内存并降低该sql执行的并行度,以降低执行速度的情况下,促使该sql正常执行。

④ 调整gbase_memory_pct_target为0.9,并适当降低gbase_heap_data、gbase_heap_large、gbase_heap_temp的默认值,此类修改可能会导致数据库整体sql执行效率下降,谨慎修改。

⑤ 修改_gbase_memory_use_swap为on,在计算最大值时会变为(物理内存+swap内存) *gbase_memory_pct_target,即数据库在执行sql是会分配swap,大大降低运行效率。

以上方法优先级依次递减。

评论

登录后才可以发表评论
用户头像
levvel发表于 9个月前
我看好你哟!
崔哥发表于 4个月前
暖气潜催次第春,梅花已谢杏花新。半开半落闲园里,何异荣枯世上人。
GBase用户51820发表于 2个月前
谢谢分享