DM内存结构
数据库管理系统是一种对内存申请和释放操作频率很高的软件,DBMS中需加入自己的内存管理,优点如下:
1.申请、释放内存效率高;
2.能够有效地了解内存的使用情况;
3.易于发现内存泄漏和内存写越界的问题。
DM数据库管理系统的内存结构根据模块功能划分,主要包括:
1.内存池
2.缓冲区
3.排序区
4.哈希区
5. ……
内存池
DM server的内存池包括共享内存池和其他一些运行时内存池。
动态视图v$MEN_POOL详细记录了当前系统中,所有内存池的状态,通过该视图可以掌握DM server的内存使用情况。
3.1.1共享内存池
1.是DM server在启动时从操作系统申请的一大片内存;
2.避免频繁向操作系统申请、释放内存的操作,提高系统运行效率;
3.通过配置文件dm.ini可对共享内存池大小进行设置;
MEMORY_POOL 默认大小为200M
4.所需内存大于配置大小时,内存池可进行自动扩展
MEMORY_EXTENT_SIZE 指定共享内存池每次扩展的大小
MEMORY_TARGET 指定共享内存池能扩展到的最大值
5.MAX_OS_MEMORY 可以使用物理内存的百分比
3.1.2运行时内存池
从操作系统申请给特定模块单独使用的内存池,例如会话内存池和虚拟机内存池。
缓冲区
包含:
1.数据缓冲区
2.日志缓冲区
3.字典缓冲区
4.SQL缓冲区
数据缓冲区
1.是DM server在将数据写入磁盘之前以及从磁盘读入数据页之后,数据页(空闲、干净、脏、正在使用)所存储的地方;
2.是DM server至关重要的内存区域之一;
3.设置过小,缓冲液命中率低,磁盘IO频繁;
4.设置过大,容易导致操作系统内存本身不够用;
5.启动过程
系统启动->按配置向操作系统申请连续内存->按数据页大小格式化->置入"自由"链。
6.由三条链来管理数据页
自由链:存放尚未使用的内存数据页;
LRU链:存放已经被使用的内存数据页(未修改和已修改);
脏链:村昂已经被修改过的内存数据页。
7<