PG内核分析 Q&A (6)

由于页面块是文件块在内存中的存在形式,因此在后文中如不进行特殊说明也会使用页面来指代文件块.

表文件的写入(即落般或刷盘)是以什么单位写入的

表文件的写入也是以页面块为单位.

PG采用的是行存还是列存

PG采用的是传统的行式存储, 即以元组为单位进行数据的存储.

当然, 数据库还有”列存”这样的存储方式, 使用在特定的场合.

元组可以跨页面块(或文件块)存储吗

不能.

PG不支持元组的跨块存储,每个元组最大为MaxHeapTupleSize.

元组不可以跨块存储的原因

元组不可以跨块存储, 这样保证了文件块中存储的是多个完整的元组.

PG在内存中如何存储磁盘中的文件块的

与操作系统一样,PG在内存中开辟了缓冲区域用于存储这些文件块,我们将其在内存中开辟的缓冲区域称为缓冲池,
缓冲池被划分成若干个固定大小(和文件块的尺寸相同,也是BLCKSZ)的缓冲区,
磁盘上的文件块读入内存后被存放在缓冲区中,称之为页面块或缓冲块.

BLCKSZ默认大小是多少

BLCKSZ的默认值是8192(即:8K), 因此一个标准(内存)缓冲块的大小默认为8KB.

存储管理器的主要任务包括哪些 **

有6个:

缓冲池管理

Cache机制

虚拟文件描述符管理

空闲空间管理

进程间通信机制(IPC)

大数据存储管理

缓冲池管理干什么用的

缓冲池在PG中起缓存的作用.数据库中的事务常常需要频繁地存取数据,为了减少对磁盘的读写,在事务执行时,数据首先将会放入缓冲池中,PG设立了进行间共享的缓冲池(共享缓冲池)以及进程私有的催办(本地缓冲池).

Cache机制有什么用

将进程最近使用的一些系统数据缓存在其私有内存中,其级别高于缓冲池.

OS已经有文件描述符,为什么PG还要虚拟的

PG通过虚拟文件描述符(Vitual File Descriptor, VFD)来对物理文件进行管理,
这样可以避免因为操作系统对进程打开文件的限制出现错误.

空闲空间管理是什么东东, 有什么用

即: FSM, 用于快速定位到表文件中的空闲以便于插入数据,从而提高空间利用率.

PG为什么要实现IPC

PG是一个多进程系统,
IPC用来在多个进程后台进程之间进行通信和消息的传递,比如使用消息队列来同步进程产生的无效消息,同时IPC还提供了对共享内存的管理.

PG在大数据存储管理方面提供了哪些机制, 各自有什么区别

PG在大数据存储管理方面提供了大对象和TOAST机制.
大对象机制是一种由用户控制的大数据存储方法,它允许用户调用函数,通过SQL语句直接向表中插入一个大尺寸文件(如:
图片,视频,文档等).

而TOAST机制则是在用户插入的变长数据超过一定限度时自动触发,用户无法对TOAST加以控制.

前者主要用于大尺寸的文件, 后者主要用于变长字符串.

读写元组的过程是怎样的 ***

PG内核分析 Q&A

3.2 外存管理 外存管理是干什么的

外存管理负责处理数据库与外存介质的交互过程的, 在PG中,
目前只实现了磁盘的管理操作.

其他介质的PG提供了统一的外存操作接口, 需要自己来实现.

3.2.1 表和元组的组织方式 同一个表的元组在表文件中是如何存储的

在PG中, 同一个表中的元组按照创建的顺序依次插入到表文件中的.

备注: 在进行清理操作清除被删除的元组后,
元组也可以以无序的方式插入到具有空闲空间的文件块中.

什么是堆文件

元组之间不进行关联, 这样的表文件称为堆文件.

PG中有哪些堆文件

4种:

普通堆

临时堆

序列

TOAST表

元组之间不进行关联, 这样的表文件就叫普通堆文件.

临时堆的结构与普通堆相同,但临时堆仅在会话过程中临时创建,会话结束会自动删除.

序列则是一种元组值自动增长的特殊堆.

TOAST表其实也是一种普通堆,但是它被专门用于存储变长数据.

尽管这几种堆文件功能各异,但在底层的文件结构却是相似的:
每个堆文件都是由多个文件块组成,在物理磁盘中的存储形式如图:

PG内核分析 Q&A

了解一下PG中的”HOT技术”

PG内核分析 Q&A

3.2.2 磁盘管理器

磁盘管理器是SMGR的一种具体实现, 它对外提供了管理磁盘介质的接口,
其主要实现在文件md.c中.磁盘管理器并非对磁盘上的文件直接进行操作,
而是通过VFD机制来进行文件操作.

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zysxsx.html