上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人
2.8 虚拟内存段
虚拟内存段的主要用途如下,如图2-8所示。
图2-8 虚拟内存段
● 记录用户会话信息:每个会话有一个缓冲池,用于保存私有数据,缓冲池的名称和用户会话的ID是相同的,每个用户连接成功时,数据库将为其分配一个会话ID,当用户连接断开之后,缓冲池也随即释放。
● 缓冲数据字典信息:当一个用户第一次执行 SQL 语句时,它需要表的信息,数据库服务器必须从系统表中检索这些信息,如果这些系统表的信息不在内存中,就需要从磁盘中读取这些信息到内存中,这些表的信息放在内存结构中将使得访问的速度更快,这个内存结构就称做数据字典缓冲池,后续的会话会重用这些内存结构中的表信息。
● 缓冲存储过程:当一个过程被第一次调用时,这个过程的执行计划会从系统表sysprocplan 读到存储过程缓冲池中,后续的用户会从缓冲池中调用这个过程,时间和内存都节约了下来。
● 线索信息:多线索的缓冲池包括了用于控制线索的结构和堆栈的信息。
● 排序:排序所需的临时空间从虚拟段中申请。
● 大缓冲:当AIO VP将大的块信息写到磁盘上时会使用大的缓冲。
● 全局信息:不属于某个特定会话的不同种类的信息。
虚拟段中保存的数据的特性,决定了这部分内存会根据用户的活动而变化,当数据库中的活动很高时,可能需要创建更多的缓冲池,已有的缓冲池会被扩大。如果需要很多的缓冲,另外一个虚拟段会动态增加。
可以在Informix的配置文件中指定第一个虚拟段的大小,或者配置另外增加的虚拟段的大小,也可以通过onmode命令在线增加一个虚拟段。
当共享内存段申请之后,系统管理员只能通过onmode命令或者关闭数据库来释放内存。