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