insert select 申请内存大小参数
_gbase_insert_malloc_size_limit
_gbase_insert_malloc_size_limit 是控制 insert select 场景下一次申请内存的大小。
默认值为 10240,为较优配置。
如果 insert select 中涉及较长的 varchar 字段如包含多个 varchar(2000)的字段,会导致每行或每几行数据申请一次内存,内存频繁的申请就造成了 sys cpu 占用,影响性能。
推荐取值为最大字符串定义的 5 倍,如最大字符串定义为 varchar(2000),则该值可配置为 10000。
内存缓存 DC 个数配置
_gbase_dc_window_size
_gbase_dc_window_size 参数用于配置内存中缓存的 DC 个数,953 版本默认值为 256。
在 join 运算场景中,如_gbase_dc_window_size 参数配置较小,当需要缓存的实际数据量超过设置的 DC 数时,就可能导致 sys 占用。可按需调整。
集群节点间一次数据发送和接收的数据大小
通常这三个从参数都无需调整。在扩容过程中,如发现较为严重的内存占用问题和性能问题 , 可 以 考 虑 调 大 或 调 小 _gbase_rep_receive_buffer_size 、_gbase_rep_pending_memory_size 参数。通过 show engine express status的 SQL 命令可以查_gbase_rep_receive_buffer_size 的使用情况。
_gbase_rep_receive_buffer_size
集群节点间一次数据接收的数据大小。_gbase_rep_receive_buffer_size 参数表示
接收端的缓存大小,默认设置为 20G,最小可设置为 5G,无上限,单位为 MB。
_gbase_rep_pending_memory_size
集群节点间一次数据发送的数据大小。_gbase_rep_pending_memory_size 参数
代表接收端接收缓存的上限,以 MB 为单位,这个值设得越大则接收端的压力越大,
反之则发送端的压力越大,需要找到一个中间值,使发送端和接收端的压力比较均
衡,才能使效率更高。当前经验值是设为物理内存的 10%。
_gbase_rep_receive_buffer_threshold
数据接收和发送的上限。
一次释放 unlock 状态的 DC 数量设置
_gbase_cache_drop_unlock_cell_count
_gbase_cache_drop_unlock_cell_count 参数表示一次释放 unlock 状态的 DC 数量,默认取值为 1000。
当 DC 堆 满 的 时 候 , 执 行 unlock 状 态 的 DC 清 理 释 放 , 一 次 释 放_gbase_cache_drop_unlock_cell_count 个 。
如 果 完 成 一 次 释 放 后 依 然 满 足_gbase_cache_drop_unlock_cell_count 个 unlock 状态的 DC 待释放,则等待_gbase_cache_drop_delay_time 秒后再次进行 unlock 状态 DC 释放。
可以调大_gbase_cache_drop_unlock_cell_count 参数,一次尽量多的释放 DC。
_gbase_cache_drop_delay_time
_gbase_cache_drop_delay_time 参数表示执行 DC 释放的时间间隔,默认为 0