暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

gbase性能优化数据库参数配置(一)

原创 欧阳无敌 2022-07-29
1904

系统参数在服务器初始化时从配置文件读取设定值,未设置值的参数使用系统默
认值。
 如何设置系统参数 :
• 在配置文件中设置,需要重新启动服务才能生效。
• 连接数据库后设置。
查看系统参数的值 show variables like “参数名称”; Set [global] 系统变量 = 值 在当前session或者全局生效,当服务重启之后就不再生效。

GNode的内存参数
1. Heap参数(global)
gbase_heap_data 主要设计用途是缓存数据(DC),应分配最多的内存。
gbase_heap_large 用于管理不频繁申请、释放的内存。
gbase_heap_temp 用来分配较为琐碎的和小块儿的临时内存,较少使用。
gbase_memory_pct_target 设置内存的可用比例,默认0.8。
参数下限:
gbase_heap_data >= 512MB
gbase_heap_large >= 256MB
gbase_heap_temp >= 256MB
参数上限:
(gbase_heap_data + gbase_heap_large + gbase_heap_temp ) <= total memory *
gbase_memory_pct_target

算子buffer(session)
算子buffer均为session级别,即如果设置gbase_buffer_result=1G,且并发数为30,则在执行并发的过程中,30并发总共占用的gbase_buffer_result就为
1G*30 = 30G,而且是在不计算其他的算子buffer的情况下。 所以如果在高并发环境中将某一个算子buffer设置很大的话,很有可能就会出现内存不足无法分配的情况。

常用的buffer如下:
• gbase_buffer_distgrby:用于保存distinct操作的中间结果;
• gbase_buffer_hgrby:用于保存shash group by操作的中间结果;
• gbase_buffer_hj:用于保存hash join操作的中间结果;
• gbase_buffer_insert:用于保存insert values 的中间结果;
• gbase_buffer_result:用于保存物化的中间结果;
• gbase_buffer_rowset:用于保存join计算的中间结果集;

• gbase_buffer_sj:用于保存sort merge join的中间结果,当join条件是a>=b或者a<=b时,可能会使用sort merge join; 

• gbase_buffer_sort:用于保存sort操作的中间结果。
算子buffer的设置原则:
一般情况下(非高并发场景),根据系统内存大小,算子buffer可以按照如
下方法设置:
• gbase_buffer_hgrby和gbase_buffer_hj最大不超过4G;
• gbase_buffer_result最大不超过2G;
• gbase_buffer_rowset最大不超过1G;
• 其他算子使用系统估算即可。
• 如果在高并发场景下,则不需要设置过大的算子buffer,一般以系统自动评估为准。但如果并发数过大,不排除需要人为将算子buffer设置更小的情况。即并发数乘以总算子buffer 大小不超过gbase_heap_large为

修改算子buffer的其它场景:
如果某条sql由于某个算子执行过慢(瓶颈点可参考单机trace),可以适当调大与之对应算子buffer。例如根据trace 发现join 较慢,可以适当调大gbase_buffer_hj的值。但是需要注意,调整该值时必须不能影响其他SQL的执行。 

「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论