- 存储管理器的体系结构
PostgreSQL的存储管理器主要包括两个功能:内存管理和外存管理。除了管理内存和外存的交互外,存储管理器的另一个主要任务是对内存进行统筹安排和规划。存储管理器的体系结构如下图所示:

内存管理包括共享内存的管理以及进程本地内存的管理。在共享内存中存储着所有进程的公共数据,例如锁变量、进程通信状态、缓冲区等。本地内存为每个后台进程所专有。是它们的工作区域,存储着属于该进程的Cache(高速缓存)、事务管理信息、进程信息等。
外存的管理包括表文件管理、空闲空间管理、虚拟文件描述符管理以及大数据存储管理等。
- 存储管理器的主要任务
总的来说,存储管理器的主要任务包括:
(1)缓冲池管理:缓冲池在PostgreSQL中起缓存的作用。数据库中的事务常常需要频繁地存取数据,为了减少对磁盘的读写,在事务执行时,数据首先将会放入缓冲池中,PostgreSQL设立了进程间共享的缓冲池(共享缓冲池)以及进程私有的缓冲池(本地缓冲池)。
(2)Cache机制:将进程最近使用的一些系统数据缓存在其私有内存中,其级别高于缓冲池。
(3)虚拟文件描述符管理:PostgreSQL通过虚拟文件描述符(VFD)来对物理文件进行管理,避免因为操作系统对进程打开文件数的限制出现错误。
(4)空闲空间管理:用于快速定位到表文件中的空闲空间以便插入新数据,从而提高空间利用率。
(5)进程间通信机制(IPC):PostgreSQL是一个多进程的系统,IPC用来在多个后台进程之间进行通信和消息的传递,比如使用消息队列来同步进程产生的无效消息,同时IPC还提供了对共享内存的管理。
(6)大数据存取管理:提供大对象和TOAST机制。
- 读写元组的过程
当一个PostgreSQL进程从数据库中读写一个元组的时候。各个功能模块的使用顺序由下图所示:


1350

被折叠的 条评论
为什么被折叠?



