Shared Mem Header |
||||
LRU Queues |
Lock Table |
Buffer-header Table |
Logical log Buffer |
Physical log Buffer |
Buffer pool |
共享内存常驻段包含以下几个部分:
Shared Mem Header 共享内存头
共享内存缓冲池是从磁盘读取的数据库空间页的缓冲区,用来缓存数据库表从磁盘读取的数据,数据库在内存中对数据进行访问和修改,当数据发生变化后,将写回磁盘。其中每个缓冲区就是爷数据库服务器页的大小。
LRU Queues 最近最久未使用页面置换算法队列
LRU:最近最久未使用页面置换算法。指的是当CPU想要调用某一页时,此页若不在内存中,操作系统会以一定的算法来决定将哪一页调出内存,以空出空间将需求页调入内存。页面调度算法有先进先出调度算法、随机调度算法、最近最少使用调度算法等。
Lock Table 锁表
LOCK TABLE 语句可以用来锁定表、表分区或表子分区,以实现进程对共享内存的互斥访问。锁占用的内存区域在数据库启动时已经确定,使用常驻内存段部分的内存。当锁资源不够用时,虚拟服务器将在虚拟内存段自动扩展新的锁。
Oracle中的锁定可以分为几类:
1、DML lock(data lock)
2、DDL lock(dictionary lock)
3、internal lock/latch。
Buffer-header Table 缓冲池头表
每个缓冲池也会有头指针指向其首地址,而缓冲池头表就用来存储所有缓冲池的头指针地址,其作用更像是用于缓冲池的索引表。
Logical log Buffer 逻辑日志缓冲区
逻辑日志缓冲区用来将数据库处理过程中生成的逻辑日志缓存在内存中,在某一特定事件发生后,再一次性写入逻辑日志文件,通过逻辑日志缓存可以有效减少I/O次数,提高逻辑日志写入性能。
Physical log Buffer 物理日志缓冲区
物理日志缓冲区用来将数据库处理过程中生成的物理日志缓存在内存中,在某一特定事件发生后,再一次性写入物理日志文件,通过物理日志缓存可以有效减少I/O次数,提高物理日志写入性能。
Buffer pool 共享内存缓冲池
共享内存缓冲池是从磁盘读取的数据库空间页的缓冲区,用来缓存数据库表从磁盘读取的数据,数据库在内存中对数据进行访问和修改,当数据发生变化后,将写回磁盘。其中每个缓冲区就是数据库服务器页的大小。