淘汰 unlock 状态的热数据 DC 参数设置
_gbase_cache_drop_hot_data
_gbase_cache_drop_hot_data 参数为开关参数,增加了一种 DC Cache 淘汰管理策略,允许释放 unlock 状态的 DC 数据而不用考虑该数据是否属于热数据(被多次使用的数据)。该参数默认取值为 0,建议设置为 1,即允许清除 unlock 状态的热数据。
表缓存
table_definition_cache
用于保存表定义,也就是 frm 内容,是 table_share 的 cache 大小。默认取值 512,建议调整为 5120。
table_open_cache
用于保存 TABLE 的 cache 大小。
table_open_cache 用于保存 TABLE 的 cache 大小,默认取值 512,建议调整为1280;
table_open_cache 及 table_definition_cache 这两个参数默认取值情况下,可能会出现存储过程执行报错“Prepared statement needs to be re-prepared”。
在一些需要打开大量表的环境中,如在使用分区表的情况下,每个表分区都是一个表对象,相比于非分区表会需要更多的 cache 空间。
_gbase_express_table_limit
用于当 express 引擎缓存的表个数大于该值时,回收表元数据所占内存
_gbase_express_table_metadata_limit
用于当 express 引擎缓存的表元数据字节大于该值时,进行回收,当设置为 0 时,该值使用 gbase_temp_heap_size/2
_gbase_express_table_clear_rate
表示每次清理 express 缓存的表元数据时,清理的比例。(表个数或者表元数据大小)
内存堆
gbase_heap_data
主要设计用途是缓存数据,应分配最多的内存
gbase_heap_large
用于算子计算时使用
gbase_heap_temp
用来分配元数据和较为琐碎的和小块儿的临时内存
gbase_memory_pct_target
设置内存的可用比例,默认 0.8。当以上三个堆(heap_data、heap_large、heap_temp)分配的内存合计达到总内存 0.8 比例之后再申请内存则报错。
默认总内存中三个堆的比例为:
heap_data:heap_large:heap_temp 6:3:1
_gbase_memory_use_swap
表示使用 gbase_memory_pct_target 计算时,是否考虑 swap 的大小。
952.43 版本及以上和 953.26 版本及以上有该参数。
_gbase_memory_turn_to_heap
表示之前一些从系统内存分配的是否要改为从堆上分配,此功能是为了解决内存限制不住的问题,但是必然会增加堆内存不够用的风险。
952.43 版本及以上和 953.26 版本及以上有该参数。
默认系统内存分配改为从堆上分配。
综述说明
参数下限
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