DM 数据库内存管理系统优点:
1. 申请、释放内存效率更高;
2. 能够有效地了解内存的使用情况;
3. 易于发现内存泄露和内存写越界的问题。
DM内存池包括共享内存池和运行时内存池,可通过查询动态视图 V$MEM_POOL掌握 DM Server 的内存使用情况。
SQL> select * from V$MEM_POOL order by addr;
内存池与缓冲区简介如下:
名称 | 含义 | 相关内容 |
共享内存池 | DM Server 在启动时从操作系统申请的一大片内存 | MEMORY_POOL,默认为 200M。共享内存池自动扩展参数 MEMORY_EXTENT_SIZE 指定共享内存池每次扩展的大小,参数 MEMORY_TARGET 指定共享内存池能扩展到的最大大小 |
运行时内存池 | 从操作系统申请一片内存作为本功能模块的内存池来使用 | |
数据缓冲区 | 将数据页写入磁盘之前以及从磁盘上读数据页之后,数据页所存储的地方 | 三条链来管理被缓冲的数据页:自由链,用于存放目前尚未使用的内存数据页;LRU链,用于存放已被使用的内存数据页;“脏”链,用于存放已被修改过的内存数据页。 BUFFER(100MB) 、 KEEP(8MB) 、 RECYCLE(64MB) 、 FAST_POOL_PAGES(3000)分别对应 NORMAL 缓冲区大小、KEEP 缓冲区大小、RECYCLE 缓冲区大小、FAST 缓冲区数据页总数 |
日志缓冲区 | 存放重做日志的内存缓冲区 | RLOG_BUF_SIZE 控制日志缓冲区大小,单位为页数量,且大小必须为 2 的 N 次方,否则采用系统默认大小 512 页。 |
字典缓冲区 | 存储一些数据字典信息 | DICT_BUF_SIZE,默认大小为 5M;涉及对分区数较多的水平分区表访问,调大该参数 |
SQL 缓冲区 | 执行 SQL 语句过程中所需要的内存 | USE_PLN_POOL设置是否需要计划重用; CACHE_POOL_SIZE改变 SQL 缓冲区大小 |
排序缓冲区 | 提供数据排序所需要的内存空间 | SORT_BUF_SIZE 由于该值是由系统内部排序算法和排序数据结构决定,建议使用默认值2M。 |
哈希缓冲区 | 提供哈希连接而设定的虚拟缓冲区 | HJ_BUF_SIZE限制哈希连接的效率,以建议使用默认值,或设置为更大的值 |
SSD 缓冲区 | 作为内存缓存与普通磁盘之间的缓冲层 | SSD_BUF_SIZE默认为0,即关闭的; SSD_FILE_PATH 指定文件所在路径 |