GBase 8a数据库集群,在一个SQL内部要缓冲一部分数据,通过_gbase_dc_window_size 参数。如果设置过小,当需要缓存的实际数据量超过设置的DC数时,就需要频繁的从磁盘读取数据,然后释放,然后再读取,可能导致CPU的sys占用高。如果设置过大,则会占用更多的内存,但由于减少了换入换出次数,性能会有所提高。
目录导航
用途:
可缓存到内存的DC数。
默认值
256
参数范围
[1,65536]
修改方法
gnode的配置文件的gbased部分,增加参数_gbase_dc_window_size=64
重启gbased服务,然后确认参数生效
gncli -e"show variables like '_gbase_dc_window_size‘"
分析方法
show status like '%dc_heap%';
其中Meminfo_dc_heap_malloc_size分配超过0,且经常因headp_data_buffer内存malloc不足报错(三个报错信息数字里的第一个数字高)。 BLK_TEMP: return NULL in alloc(8388620),HeapUsed(18288255904,2601731328,3035596000),SystemUsed(22624634748,0,2241434316),
说明
一般建议不超过5000个,具体根据机器内存,数据情况决定。
如当内存为64G时,设定为64~300,内存为128G时,设定为500~1000。
参数影响
DC热数据缓冲,减少后,可以缓解内存不足,避免一个大表SQL占用太多热数据,特别参与的列很多时。
同时,缓冲少了,如果数据多趟使用,但刚缓冲的数据被换出了内存,则会导致更多的磁盘读取。