GBase 8a 开发与技术支持 - 调优
type: channel
link: https://8a.gbasedbt.com/index.php/开发/调优/
items: 智能索引如果常驻内存，如何有效释放掉这部分内存？
items: 如何限制集群sql下发的任务数目？
items: 资源管理中静态池参数max_memory的设置原则
items: 在redhat7.3以下的版本，是否只能使用一个静态池、多个动态池的方式实现资源相对隔离，此时各动态池存在资源争用的风险？可用优先级、并发度参数等来调节吗？

智能索引如果常驻内存，如何有效释放掉这部分内存？
type: item
date: 2020-10-28T16:56:00+08:00
description: 智能索引被加载后常驻内存，refresh table可以释放表元数据占用的内存空间。

如何限制集群sql下发的任务数目？
type: item
date: 2020-10-28T16:13:00+08:00
description: 增加集群层参数配置限制集群sql下发的任务数目。（1）查询当前集群已有用户及其优先级别select user, task_priority from gbase.user，明确后续参数的数值配置；（2）gbase_use_priority_queue为优先级队列启用的开关，置1打开；（3）将参数_gbase_priority_tasks设置为期望的相同优先级任务的最大下发数目（默认值为CPU核数，上限为64）；（4）将参数_gbase_priority_total_tasks设置为期望的全部优先级任务的最大下发数目（默认值为CPU核数的2倍，上限为128）。注意：受控的任务语句只限于select查询及DML中的查询部分，上述参数均不支持show variables ...查询，修改后需重启集群生效。

资源管理中静态池参数max_memory的设置原则
type: item
date: 2020-10-27T11:20:00+08:00
description: 以一个静态池为例，期望最大化利用内存（同时避免溢出风险），max_memory值不应超过gnode进程的最大可用内存。max_memory值指Large堆内存的分配上限。默认情况下：gnode的最大可用内存为(系统内存+swap)*0.8。其中比率0.8可由gbase_memory_pct_target参数调整。无论是否开启资源管理，只要比率设置合理，不会引发系统OOM。两种机制同时存在，max_memory值应小于gnode的最大可用内存限制时才会生效，反之则体现为不生效或不限制。

在redhat7.3以下的版本，是否只能使用一个静态池、多个动态池的方式实现资源相对隔离，此时各动态池存在资源争用的风险？可用优先级、并发度参数等来调节吗？
type: item
date: 2020-10-27T11:18:00+08:00
description: 由于内核BUG，RH7.3/SUSE12以下版本，只能使用一个静态池。为实现类似静态池效果，可以使用多个动态池配合并行度和优先级参数。动态池的优先级和百分比参数的配置可影响CPU时间片争抢的权重，从而影响SQL的最终执行时间。在实践中，并行度参数比优先级参数会更显著的影响SQL的最终执行时间。