文件名称:DM内存结构-非线性规划——分析与方法
文件大小:4.79MB
文件格式:PDF
更新时间:2024-07-14 13:15:08
达梦数据库 DBA
第3章 DM内存结构 数据库管理系统是一种对内存申请和释放操作频率很高的软件,如果每次对内存的使用 都使用操作系统函数来申请和释放,效率会比较低,加入自己的内存管理是 DBMS 系统所必 须的。通常内存管理系统会带来以下好处: 1. 申请、释放内存效率更高; 2. 能够有效地了解内存的使用情况; 3. 易于发现内存泄露和内存写越界的问题。 DM数据库管理系统的内存结构主要包括内存池、缓冲区、排序区、哈希区等。根据系统 中子模块的不同功能,对内存进行了上述划分,并采用了不同的管理模式。 3.1 内存池 DM Server的内存池包括共享内存池和其他一些运行时内存池。 动态视图 V$MEM_POOL 详细记录了当前系统中所有的内存池的状态,可通过查询这个 动态视图掌握 DM Server的内存使用情况。 3.1.1 共享内存池 共享内存池是 DM Server 在启动时从操作系统申请的一大片内存。在 DM Server 的 运行期间,经常会申请与释放小片内存,而向操作系统申请和释放内存时需要发出系统调用, 此时可能会引起线程切换,降低系统运行效率。采用共享内存池则可一次向操作系统申请一 片较大内存,即为内存池,当系统在运行过程中需要申请内存时,可在共享内存池内进行申 请,当用完该内存时,再释放掉,即归还给共享内存池。 DM系统管理员可以通过 DM Server的配置文件(dm.ini)来对共享内存池的大小进 行设置,共享池的参数为 MEMORY_POOL,该配置默认为 200M。如果在运行时所需内存大 于配置值,共享内存池也可进行自动扩展,INI参数 MEMORY_EXTENT_SIZE指定了共享内 存池每次扩展的大小,参数 MEMORY_TARGET则指定了共享内存池能扩展到的最大大小。 3.1.2 运行时内存池 除了共享内存池,DM Server的一些功能模块在运行时还会使用自己的运行时内存池。 这些运行时内存池是从操作系统申请一片内存作为本功能模块的内存池来使用,如会话内存 池、虚拟机内存池等。 3.2 缓冲区 3.2.1 数据缓冲区 数据缓冲区是 DM Server在将数据页写入磁盘之前以及从磁盘上读取数据页之后,数 据页所存储的地方。这是 DM Server 至关重要的内存区域之一,将其设定得太小,会导致 50