数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是 DBMS 系统所必须的。
通常内存管理系统会带来以下好处:
1. 申请、释放内存效率更高;
2. 能够有效地了解内存的使用情况;
3. 易于发现内存泄露和内存写越界的问题。 DM 数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统 中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。
达梦数据库内存分为:
内存池(共享内存池,运行时内存池)
缓冲区(数据缓冲区,日志缓冲区,字典缓冲区,SQL 缓冲区)
排序区
哈希区
–相关sql及视图
select * from SYS."V$BUFFERPOOL";
select distinct name from SYS."V$MEM_POOL";
此两者构成了,达梦分配的所有内存。
–数据缓冲区各组大小
select name,sum(page_size) from v$bufferpool GROUP by name;
–数据缓冲区
select * from v$bufferpool;
select * from SYS."V$PARAMETER" t WHERE name in ('BUFFER','FAST_POOL_PAGES','RECYCLE','KEEP');
–重做日志缓冲区
select * from SYS."V$PARAMETER" t WHERE name = 'RLOG_BUF_SIZE';
–sql缓冲区
select * from SYS."V$PARAMETER" t WHERE name = 'CACHE_POOL_SIZE';
–主内存池(共享内存池)
MEMORY_POOL:初始大小
MEMORY_EXTENT_SIZE:扩展大小
MEMORY_TARGET:目标大小
MEMORY_N_POOL:共享内存池个数,默认为 1,高并发时可设置多个。
–运行时内存池
特点:使用时申请,用完即释放。包含:虚拟内存池 vm pool、会话池 session pool、
排序区、HASH 区等。
排序区和 HASH 区
排序区:SORT_BUF_SIZE
少量的数据排序,优先在内存中排序,此时占用排序区;
大量的数据排序,内存中放不下,占用临时表空间排序。
如果业务经常有排序,可以适当调大排序区,提高效率。
HASH 区:HJ_BUF_SIZE
HASH 连接、HASH 分区占用哈希区。如果业务 hash 连接较多,可以调大哈希区。
select name, type, value, sys_value, file_value from v$parameter t where name like 'HJ%';
更多资讯请上达梦技术社区了解:https://eco.dameng.com