这是一份术语及其在 PostgreSQL 和一般关系 数据库系统语境中含义的列表。
原子性(Atomicity)、 一致性(Consistency)、 隔离性(Isolation)和 持久性(Durability)。 数据库事务的这一组属性旨在保证并发操作乃至发生错误、断电等情况时 的有效性。
一种把多个输入值组合起来(即 聚集)的 函数,例如通过 计数、求平均或求和,产出一个单一的输出值。
更多信息见 Section 9.21。
See Also 窗口函数(Window function,routine).
PostgreSQL 用来访问表和索引中数据的 接口。 这一抽象允许增加对新类型数据存储的支持。
更多信息见 Chapter 62 和 Chapter 63。
从 表 和其他 关系 中的数据收集统计信息的动作,以帮助 查询规划器 决定如何执行 查询。
(不要把这一术语与 EXPLAIN 命令的
ANALYZE 选项相混淆。)
更多信息见 ANALYZE。
异步 I/O(AIO)指以非阻塞的 方式(异步地)执行 I/O, 与会在整个 I/O 期间阻塞的同步 I/O 相反。
使用 AIO 时,发起一个 I/O 操作与等待该操作的结果是分离的, 这允许并发地发起多个 I/O 操作, 也允许在执行 I/O 的同时执行重 CPU 的操作。 这种并发性提升的代价是复杂性的增加。
See Also 输入/输出(Input/Output).
事务 的一种属性:它的所有操作要么全部作为一个单元完成,要么全都不做。 此外,如果事务执行期间发生系统故障,恢复之后任何部分结果都不可见。 这是 ACID 属性之一。
一组例行执行 清理 和 分析 操作的 后台进程。 负责协调这项工作且始终存在(除非禁用 autovacuum)的那个 辅助进程 被称为 autovacuum launcher, 而执行任务的进程被称为 autovacuum workers。
更多信息见 Section 24.1.6。
实例 内负责 为实例执行某项特定后台任务的进程。 辅助进程包括 autovacuum launcher (但不包括 autovacuum worker)、 background writer、 checkpointer、 logger、 startup process、 WAL archiver、 WAL receiver (但不包括 WAL sender)、 WAL summarizer 以及 WAL writer。
实例 内的 进程,它运行系统提供的或用户提供的代码。 它是 PostgreSQL 若干特性的基础设施, 例如 逻辑复制 和 并行查询。 此外,扩展 可以 添加自定义的后台工作者进程。
更多信息见 Chapter 46.
一种 辅助进程, 它把 共享内存 中的 脏 数据页面 写到文件系统。 它周期性地被唤醒,但每次只工作一小段时间,以便把它昂贵的 I/O 活动在时间上分散开,避免产生可能阻塞其他 进程的较大 I/O 峰值。
更多信息见 Section 19.4.4.
所有 数据库集簇 文件的一份二进制副本。它由工具 pg_basebackup 生成。 结合 WAL 文件,它可以用作恢复、日志传送或流复制的 起点。
数据页面中不包含当前行版本的空间,例如未使用的(空闲)空间或 过时的行版本。
该用户拥有每个数据库中的所有系统目录表。 它也是所有被授予权限的源头。 由于这些原因,该角色不能被删除。
某些操作会访问大量的 页面。 缓冲区访问策略 有助于防止这些操作从 共享缓冲区 中逐出过多的页面。
缓冲区访问策略会建立对有限数量的 共享缓冲区 的引用,并循环地复用它们。 当操作需要一个新页面时,会从策略环中的缓冲区里选择一个受害者 缓冲区,这可能需要把该页面的脏数据以及可能还有未刷写的 WAL 刷写到永久 存储上。
缓冲区访问策略被用于多种操作,例如大表的顺序扫描、
VACUUM、
COPY、
CREATE TABLE AS SELECT、
ALTER TABLE、
CREATE DATABASE、
CREATE INDEX 和
CLUSTER。
更多信息见 CREATE CAST.
SQL 标准用这个术语指代 PostgreSQL 术语中所说的 数据库。
更多信息见 Section 22.1.
定义在一个 关系 上的 一种 约束, 它限制一个或多个 属性 中允许的 值。 检查约束可以引用该关系中同一行的任何属性, 但不能引用同一关系的其他行或其他关系。
更多信息见 Section 5.5.
WAL 序列中的一点, 在这一点上可以保证堆和索引数据文件已经用共享内存中在该检查点之前 被修改的所有信息完成更新; 会写一个 检查点记录 并刷写到 WAL 中来标记该点。
检查点也指执行达到上述定义的检查点所必需的全部动作这一行为。
当满足预定义条件(例如已经过了指定的时间量,或已经写入了某一
数量的记录)时会发起这个过程;用户也可以用
CHECKPOINT 命令调用它。
更多信息见 Section 28.5.
See 关系(Relation).
拥有
数据目录
的操作系统用户,
postgres 进程以该用户身份运行。
在创建新的
数据库集簇
之前,必须先存在这个用户。
在有 root 用户的操作系统上,
该用户不允许成为集簇属主。
在 数据库 中 最终确定一个 事务 的 动作,它使该事务对其他事务可见,并确保其 持久性。
更多信息见 COMMIT.
客户端进程与一个 后端 进程之间 已建立的通信线路,通常通过网络,用于支持一个 会话。 这个术语有时被用作会话的同义词。
更多信息见 Section 19.3.
数据库 中的 数据始终符合 完整性约束 的属性。 允许事务在提交之前短暂地违反某些约束,但如果到提交时这些违反仍 未解决,这样的事务会被自动 回滚。 这是 ACID 属性之一。
对一个 表 中允许的数据 值的限制,或者对一个 域 的属性的 限制。
更多信息见 Section 5.5.
一个系统,如果被启用,它会累积关于 实例 活动的 统计信息。
更多信息见 Section 27.2.
See 数据目录(Data directory).
更多信息见 Section 22.1.
一组数据库和全局 SQL 对象,以及它们共同的静态和动态元数据。 有时被称为一个 集簇。 数据库集簇使用 initdb 程序创建。
在 PostgreSQL 中,
cluster 这个词有时也被用来指代实例。
(不要把这个术语与 SQL 命令 CLUSTER
相混淆。)
See 实例(Instance).
具有 超级用户状态 的角色 (见 Section 21.2)。
通常被简称为 超级用户。
服务器 文件系统
上的基础目录,包含与一个
数据库集簇
关联的所有数据文件和子目录
(表空间
例外,以及可选的
WAL)。
环境变量 PGDATA 通常被用来指代数据目录。
一个 集簇 的存储 空间由数据目录加上任何额外的表空间组成。
更多信息见 Section 66.1.
用于存储关系数据的基本结构。 所有页面的大小都相同。 数据页面通常存储在磁盘上,每个页面位于一个特定的文件中, 并且可以被读入 共享缓冲区 中,在那里可以被修改,从而变得 脏。 它们在被写到磁盘后重新变干净。 起初只存在于内存中的新页面在被写出之前同样是脏的。
一个 SQL 数据类型的单个值的内部表示。
更多信息见 DELETE.
基于另一种底层数据类型的用户定义数据类型。 它的行为与底层类型相同,只是可能限制了允许的值的集合。
更多信息见 Section 8.18.
一种软件附加包,可以安装在一个 实例 上以 获得额外的特性。
更多信息见 Section 36.17.
为给定的 关系 存储数据的物理文件。 文件段的大小受一个配置值限制 (通常为 1 GB), 因此如果一个关系超过该大小,它就会被拆分成多个段。
更多信息见 Section 66.1.
表示不包含在本地 数据库 中的 数据的一种手段,使这些数据看起来就像在本地 表 中一样。 通过外部数据包装器可以定义一个 外部服务器 和 外部表。
更多信息见 CREATE FOREIGN DATA WRAPPER.
定义在一个 表 的一个或多个 列 上的一种 约束, 它要求这些 列 中的值能够 标识另一个(少数情况下是同一个) 表 中的零个或 一个 行。
一组命名的 外部表, 它们都使用同一个 外部数据 包装器 并且拥有共同的其他配置值。
更多信息见 CREATE SERVER.
一种 关系,它看起来 拥有与普通 表 相似的 行 和 列, 但它会通过其 外部数据 包装器 转发数据请求,后者会按照该 外部表 的定义返回结构化的 结果集。
更多信息见 CREATE FOREIGN TABLE.
存储一个关系的各个独立的分段的文件集合。 主分支(main fork)是实际数据所在之处。 还有两个用于元数据的二级分支: 空闲空间映射 和 可见性映射。 非日志关系 还有一个 init 分支。
保存关于表的主分支中每个数据页面的元数据的存储结构。 每个页面的空闲空间映射条目存储可供未来元组使用的空闲空间数量, 并且其结构支持高效地搜索能容纳给定大小的新元组的可用 空间。
更多信息见 Section 66.3.
例程的一种类型,它接收零个或多个参数,返回零个或多个输出值,
并且被约束为在一个事务内运行。
函数作为查询的一部分被调用,例如通过
SELECT。
某些函数可以返回
集合;这类
函数被称为
集合返回函数。
更多信息见 CREATE FUNCTION.
See UTC.
用于允许一个 用户 或 角色 访问 数据库 中 特定对象的 SQL 命令。
更多信息见 GRANT.
包含从某个 表 或 物化视图 派生的数据的一种 关系。 它的内部结构支持快速检索和访问原始数据。
更多信息见 CREATE INDEX.
一种特殊的 基础备份, 它对某些文件可能只包含自上一次备份以来被修改过的页面,而不是 每个文件的完整内容。 与基础备份一样,它由工具 pg_basebackup 生成。
恢复增量备份要使用工具 pg_combinebackup, 它把增量备份与一个基础备份合并。 之后,恢复过程可以使用 WAL 把 数据库集簇 带到一致的状态。
更多信息见 Section 25.3.3.
输入/输出(I/O)描述程序与外围设备之间的 通信。 在数据库系统的语境中, I/O 通常(但不限于)指与存储设备或网络的 交互。
See Also 异步 I/O(Asynchronous I/O).
更多信息见 INSERT.
使用一个公共共享内存区域通信的一组 后端 和 辅助进程。 一个 postmaster 进程 管理该实例;一个实例恰好管理一个 数据库集簇 及其所有数据库。 只要它们的 TCP 端口不冲突,许多实例可以运行在同一台 服务器 上。
实例处理 DBMS 的所有关键特性: 对文件和共享内存的读写访问、 ACID 属性的保证、 到 客户端进程 的 连接、 权限验证、崩溃恢复、复制等等。
一个事务的效果在它提交之前对 并发事务 不可见的属性。 这是 ACID 属性之一。
更多信息见 Section 13.2.
允许进程限制或阻止对资源的并发访问的一种机制。
日志文件包含关于事件的、人类可读的文本行。 例子包括登录失败、长时间运行的查询等等。
更多信息见 Section 24.3.
如果对一个
表 的更改会被
发送到
WAL,则该表被认为是
日志化的。
默认情况下,所有普通表都是日志化的。
可以在创建时或通过 ALTER TABLE 命令把一个表
指定为
非日志的。
一种 辅助进程, 如果被启用,它会把关于数据库事件的信息写入当前的 日志文件。 当到达某些与时间或数量相关的标准时,会创建一个新的日志文件。 也被称为 syslogger。
更多信息见 Section 19.8.
一组发布者和订阅者实例,发布者实例把更改复制到订阅者 实例。
WAL 中的字节偏移, 随着每一条新的 WAL 记录 单调递增。
更多信息见
pg_lsn 和
Section 28.6.
See 主服务器(Primary server).
某些信息已被预先计算并存储起来供以后使用、而不是即时计算的 属性。
这个术语被用在 物化视图 中,表示从视图的查询派生的数据与该数据的来源分开存储在 磁盘上。
这个术语也被用来指某些多步查询,表示执行给定一步得到的数据被 存储在内存中(可能会溢出到磁盘), 以便它能被另一步读取多次。
由一条 SELECT 语句
(就像
视图 那样)定义的
一种
关系,
但它像
表 那样存储数据。
它不能通过 INSERT、
UPDATE、
DELETE 或
MERGE 操作被修改。
更多信息见 CREATE MATERIALIZED VIEW.
用于按条件向给定的 表 中添加、修改 或移除 行 的一条 SQL 命令,它使用来自一个源 关系 的数据。
更多信息见 MERGE.
一种旨在让多个 事务 读写 相同的行而不使一个进程导致其他进程停滞的机制。 在 PostgreSQL 中,MVCC 的实现方式是 在 元组 被修改时 创建它们的副本 (即 版本); 当能够看到旧版本的事务终止之后,那些旧版本需要被移除。
一种表示不存在的概念,它是关系数据库理论的核心信条之一。 它代表一个确定值的缺失。
See 查询规划器(Query planner).
一个较大集合的若干互不相交(不重叠)子集之一。
就 分区表 而言: 指分别包含分区表一部分数据的那些表中的一个, 该分区表被称为 父表。 分区本身也是一个表,因此它也可以被直接查询; 同时,一个分区有时也可以是一个分区表,从而允许创建 层次结构。
一个 实例 的 第一个进程。 它启动并管理 辅助进程, 并按需创建 后端进程。
更多信息见 Section 18.3.
定义在一个 表 或其他 关系 上的 唯一约束 的一种特例,它还保证 主键 内的 所有 属性 都没有 空值。 顾名思义,每个表只能有一个 主键,不过可以有多个同样不含可空属性的 唯一约束。
当两个或更多 数据库 通过 复制 链接 时,被视为信息的权威来源的那个 服务器 被称为 primary, 也被称为 master。
例程的一种类型。
它们的独特之处在于不返回值,并且允许执行
COMMIT 和
ROLLBACK 这样的事务性语句。
它们通过 CALL 命令调用。
更多信息见 CREATE PROCEDURE.
PostgreSQL 中致力于确定 (规划)执行 查询 最有效方式的 部分。 也被称为 查询优化器、 优化器,或简称 规划器。
See 元组(Tuple).
See WAL 文件(WAL file).
对 数据库 中所有 拥有名称以及一组按特定顺序定义的 属性 的对象的 通用称谓。 表、 序列、 视图、 外部表、 物化视图、 复合类型以及 索引 都是关系。
更宽泛地说,关系是一组元组的集合;例如, 查询的结果也是一个关系。
在 PostgreSQL 中, Class 是 relation 的古旧同义词。
与一个 主 数据库配对、并维护该主数据库部分或全部数据副本的一个 数据库。 这样做最重要的原因是允许对数据的更大访问能力,以及在 主 变得不可用时保持数据的可用性。
把数据在一台 服务器 上重现 到另一台称为 副本 的服务器上 的行为。 它可以采取 物理复制 的形式(把一台服务器上的所有 文件更改逐字复制), 或 逻辑复制 的形式(用更高层级的表示传递一个 定义好的数据更改子集)。
更多信息见 Section 28.5.
一条 SQL 命令(通常是
SELECT,但如果指定了
RETURNING 子句,也可以是
INSERT、
UPDATE、
DELETE 或
MERGE 命令)完成后,
从一个
后端进程
传输给一个
客户端 的
关系。
结果集是一个关系这一事实意味着一个查询可以被用在另一个查询的 定义中,从而成为一个 子查询。
阻止一列指定的 角色 访问一组 指定的 数据库 对象的 命令。
更多信息见 REVOKE.
对 实例 的 一组访问特权的集合。 角色本身是一种可以授予其他角色的特权。 当多个 用户 需要相同的 特权时,经常为了方便或为了确保完整性而这样做。
更多信息见 CREATE ROLE.
更多信息见 ROLLBACK.
存储在数据库系统中、可以被调用执行的的一组定义好的指令。 例程可以用多种编程语言编写。 例程可以是 函数 (包括集合返回函数和 触发器函数)、 聚集函数, 以及 过程。
许多例程已经在 PostgreSQL 本身中定义,但也可以添加用户定义的例程。
See 元组(Tuple).
一个 事务 的 步骤序列中的一种特殊标记。 这个时间点之后的数据修改可以被回退到保存点的 时刻。
更多信息见 SAVEPOINT.
模式是 SQL 对象 的 命名空间,这些对象都位于同一个 数据库 中。 每个 SQL 对象必须恰好位于一个模式中。
所有系统定义的 SQL 对象都位于模式
pg_catalog 中。
更宽泛地说, schema 一词被用来指一个给定的 数据库 或其 子集的全部数据描述 ( 表 定义、 约束、 注释等)。
更多信息见 Section 5.10.
See 文件段(File segment).
用于从
数据库 请求
数据的
SQL 命令。
通常,SELECT 命令不应以任何方式修改
数据库,
但查询中调用的
函数 有可能
具有会修改数据的副作用。
更多信息见 SELECT.
运行 PostgreSQL 实例 的 计算机。 server 一词指真实的硬件、 一个容器,或一个 虚拟机。
这个术语有时被用来指实例或主机。
由一个 实例 的公共 进程使用的 RAM。 它镜像 数据库 文件的 一部分,为 WAL 记录 提供一个临时区域,并存储额外的公共信息。 注意,共享内存属于完整的实例,不属于单个数据库。
共享内存的最大部分被称为 共享缓冲区, 它用于镜像数据文件的一部分,这些文件被组织成页面。 当一个页面被修改后,在它被写回文件系统之前被称为脏页面。
更多信息见 Section 19.4.1.
任何可以用
CREATE
命令创建的对象。
大多数对象特定于一个数据库,通常被称为
本地对象。
大多数本地对象驻留在其所在数据库的特定 模式 中, 例如 关系(所有 类型)、 例程(所有 类型)、 数据类型等等。 同一模式中同一类型的此类对象的名称被强制唯一。
还存在不驻留在模式中的本地对象;一些例子是 扩展、 数据类型转换,和 外部数据 包装器。 同一类型的此类对象的名称在数据库内被强制 唯一。
其他对象类型,例如 角色、 表空间、 复制来源、逻辑复制的订阅,以及数据库本身,都不是本地 SQL 对象,因为它们完全存在于任何特定数据库之外; 它们被称为 全局对象。 此类对象的名称在整个数据库集簇内被强制 唯一。
更多信息见 Section 22.1.
定义 SQL 语言的一系列文档。
See 副本(Replica,server).
在崩溃恢复期间以及在 物理副本 中 重放 WAL 的一种 辅助进程。
(这个名字是历史遗留的:startup process 在实现复制之前就被 命名了;这个名字指的是它与崩溃后服务器启动相关的任务。)
描述实例的所有
SQL 对象
结构的
表 的集合。
系统目录位于模式 pg_catalog 中。
这些表包含内部表示的数据,通常被认为不适合用户直接检查;
同样位于模式 pg_catalog 中的一些更友好的
视图
提供了其中一部分信息更方便的访问方式,而模式
information_schema 中还存在额外的表和视图
(见 Chapter 35),它们按照
SQL 标准
的要求暴露其中一些相同的信息和额外的信息。
更多信息见 Section 5.10.
具有共同数据结构(相同数量的 属性、 相同的顺序,每个位置具有相同的名称和类型)的 元组 的集合。 表是 PostgreSQL 中最常见的 关系 形式。
更多信息见 CREATE TABLE.
服务器文件系统上的一个命名位置。
所有需要在其
系统目录
定义之外进行存储的
SQL 对象
都必须属于一个单一的表空间。
最初,数据库集簇包含一个可用的表空间,它被用作所有 SQL 对象的
默认值,称为
pg_default。
更多信息见 Section 22.6.
按照创建时的指定,存在一个 会话 或一个 事务 生命 期的 表。 其中的数据对其他会话不可见,并且不被 日志化。 临时表常被用来为多步操作存储中间数据。
更多信息见 CREATE TABLE.
把表行的大属性拆分并存储在一个次级表(称为 TOAST 表)中的机制。 每个具有大属性的关系都有自己的 TOAST 表。
更多信息见 Section 66.2.
必须作为一个单一 原子 命令行事的 一组命令的组合:它们要么全部成功、要么全部作为一个单元失败, 并且在事务完成之前它们的效果对其他 会话 不可见, 甚至完成之后可能仍然不可见,取决于隔离级别。
更多信息见 Section 13.2.
每个事务在它第一次导致数据库修改时收到的数字型、唯一且顺序
分配的标识符。
常被缩写为
xid。
存储在磁盘上时,xid 只有 32 位宽,因此只能生成大约四十亿个写
事务 ID;
为了让系统能够运行得更久,使用了同样是 32 位宽的
纪元(epoch)。
当计数器达到 xid 的最大值时,它会从
3 重新开始(小于该值的被保留),并且
纪元值加一。
在某些上下文中,纪元和 xid 值被一起视为一个单一的 64 位值;
更多细节见
Section 67.1.
更多信息见 Section 8.19.
在一次测量运行中对所有活动会话求和得到的每秒执行事务的 平均数。 它被用作实例性能特征的一种度量。
一种
函数,可以被
定义为每当某个操作
(
INSERT、
UPDATE、
DELETE、
TRUNCATE)被应用到某个
关系 时就
执行。
触发器在与调用它的语句相同的
事务 中
执行,如果该函数失败,那么调用语句也会失败。
更多信息见 CREATE TRIGGER.
按固定顺序排列的一组 属性 的 集合。 这个顺序可以由包含该元组的 表 (或其他 关系)定义, 此时该元组常被称为 行。 它也可以由结果集的结构定义,此时它有时被称为 记录。
定义在一个 关系 上的 一种 约束, 它限制一个列或列的组合中允许的值,使每个值或值的组合在该关系中 只能出现一次 — 也就是说,关系中没有任何其他行包含与它们相等的 值。
某些 关系 的 一种属性:对它们的更改不会反映在 WAL 中。 这会禁用这些关系的复制和崩溃恢复。
非日志表的主要用途是存储必须在进程之间共享的临时工作 数据。
用于修改可能已经存在于指定 表 中的 行 的 一条 SQL 命令。 它不能创建或移除行。
更多信息见 UPDATE.
具有 登录特权 的 角色 (见 Section 21.2)。
把本地 数据库 中的 登录凭证翻译为由某个 外部数据 包装器 定义的远程数据系统中的凭证。
更多信息见 CREATE USER MAPPING.
协调世界时(Universal Coordinated Time),主要的全球时间 基准,近似于零度经线上通行的时刻。 常被(不准确)地称为 GMT(格林尼治平均时)。
从表或物化视图中移除过时的
元组版本 的
过程,以及
PostgreSQL 的
MVCC 实现所要求的
其他密切相关的处理。
它可以通过
VACUUM 命令发起,但也可以通过
autovacuum
进程自动处理。
更多信息见 Section 24.1 。
由一条 SELECT 语句定义、但没有自己的存储的
一种
关系。
每当查询引用一个视图时,该视图的定义就会被代入查询,就好像用户
把它写成了子查询而非视图的名字。
更多信息见 CREATE VIEW.
保存关于表的主分支中每个数据页面的元数据的存储结构。
每个页面的可见性映射条目存储两个位:第一个
(all-visible)表示该页面中的所有元组对所有
事务可见。
第二个(all-frozen)表示该页面中的所有元组
都被标记为已冻结。
一种 辅助进程, 如果被启用,它会保存 WAL 文件 的 副本,用于创建备份或让 副本 保持 最新。
更多信息见 Section 25.3.
也被称为 WAL 段 或 WAL 段文件。 为 WAL 提供存储空间的 每一个顺序编号的文件。 这些文件都具有相同的预定义大小, 并且按顺序写入,把多个同时发生的会话中的更改交错地记录 下来。 如果系统崩溃,这些文件会被按顺序读取,并且每个更改都会被 重放,以把系统恢复到崩溃之前的 状态。
每个 WAL 文件可以在一次 检查点 把其中的所有更改写到对应的数据文件之后被释放。 释放文件可以通过删除它,或通过改变它的名称以便将来使用(称为 回收)。
更多信息见 Section 28.6.
对单个数据更改的低层级描述。 它包含足够的信息,使得在系统故障导致更改丢失时能够重新执行该 更改(即 重放)。 WAL 记录使用不可打印的二进制格式。
更多信息见 Section 28.6.
在 副本 上运行的 一种 辅助进程, 它从 主服务器 接收 WAL, 供 启动进程 重放。
更多信息见 Section 26.2.
See WAL 文件(WAL file).
一种通过网络流式传输 WAL 的特殊 后端进程。 接收端可以是 副本 中的 WAL 接收进程、 pg_receivewal,或任何其他讲复制协议的 客户端程序。
更多信息见 Section 19.5.7.
把 WAL 记录 从 共享内存 写到 WAL 文件 的 一种 辅助进程。
更多信息见 Section 19.5.
在 查询 中使用的 一种 函数, 它作用于查询的 结果集 的 一个 分区; 函数的结果基于同一分区或帧中的 行 中找到的 值。
所有 聚集函数 都可以用作窗口函数,但窗口函数也可以被用来例如为分区中的每一行 给出排名。 也被称为 分析函数。
更多信息见 Section 3.5.
在用户和系统发起的操作发生时,跟踪 数据库集簇 中更改的日志。 它由许多被顺序写入 WAL 文件 的 单独的 WAL 记录 组成。