为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:达梦8
【操作系统】:centos 7 64位
【CPU】: x86
【问题描述】*:最近在做测试时发现,往单表中插入数据,单线程每5秒插入1万条数据至该表中,该表启用了(long row),随着时间的增长,内存也不断上涨。在调整了内存参数后发现内存依然往上涨。
环境:服务器内存8G
DM8内存参数配置如下:
重启实例后,此时内存已经使用了3G,开始跑单表数据,一个小时后服务器内存快要跑完了,如图:
此时内存已使用到6.56G,DM8消耗了3.5G的内存,已经超出了设置的内存参数。程序继续跑下去内存会消耗完。这里是我的参数哪里设的有问题,还是dm8目前不支持这么密集的操作?
老师,在内存增长上来的时候,请提供下下面2个sql的查询结果,确认下内存使用到哪里了?
-----内存池的使用情况
select
name, --内存池名称
is_shared, --是否是共享的
is_overflow, --是否用到了备份池
org_size/1024.0/1024.0, --内存池初始大小
TOTAL_size/1024.0/1024.0, --内存池总大小(包括扩展的)
RESERVED_SIZE/1024.0/1024.0, --当前已分配大小(包括扩展的)
DATA_SIZE/1024.0/1024.0, --实际有效字节
EXTEND_SIZE, --每次扩展多少
TARGET_SIZE, --目标大小
N_EXTEND_NORMAL , --TARGET范围内累计扩展次数
N_EXTEND_EXCLUSIVE --超过TARGET累计扩展次数
from v$mem_pool
where N_EXTEND_EXCLUSIVE>0
order by TOTAL_size desc;
------buffer和内存池的大小
select
(select sum(n_pages * page_size)/1024/1024 from v$bufferpool)||‘MB’ as BUFFER_SIZE,
( select sum(total_size)/1024/1024 from v$mem_pool)||‘MB’ as mem_pool,
(select sum(n_pages * page_size)/1024/1024 from v$bufferpool)+(select sum(total_size)/1024/1024 from v$mem_pool)||‘MB’ as TOTAL_SIZE
From dual;
看下这个参数呢
MAX_SESSION_MEMORY