这是关于 PostgreSQL 和通用关系数据库系统中的术语及其含义的列表。
原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)和持久性(Durability)。数据库事务的这组属性旨在保证并发操作的有效性,即使发生错误、断电等情况也能保持有效。
一种函数,它通过计数、求平均值或求和等方式组合(聚合)多个输入值,产生单个输出值。
有关更多信息,请参阅第 9.21 节。
另请参阅窗口函数(例程)。
PostgreSQL 用于访问表和索引中数据的接口。这种抽象允许添加对新型数据存储的支持。
请参阅窗口函数(例程)。
从表和其他关系中的数据收集统计信息的行为,以帮助查询规划器决定如何执行查询。
(不要将此术语与EXPLAIN命令的ANALYZE
选项混淆。)
有关更多信息,请参阅ANALYZE。
异步I/O (输入/输出) (AIO描述以非阻塞方式(异步地)执行I/O (输入/输出),与同步I/O (输入/输出)形成对比,同步I/O (输入/输出).
会在整个AIO操作期间阻塞。通过I/O (输入/输出),启动一个I/O (输入/输出)操作与等待操作结果分离,允许同时启动多个CPU操作,以及同时执行I/O (输入/输出)密集型操作和
另请参阅输入/输出。
指数据项:其值不能分解为更小的组件的事实。
事务的属性,要么其所有操作作为一个单元完成,要么都不完成。此外,如果在事务执行期间发生系统故障,恢复后不会看到任何部分结果。这是ACID属性之一。
在元组中具有特定名称和数据类型的元素。
一组后台进程,定期执行清理和分析操作。协调工作的辅助进程(除非禁用自动清理)被称为自动清理启动器,执行任务的进程被称为自动清理工作器。
有关更多信息,请参阅第 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
。
将数据项从其当前数据类型转换为另一种数据类型。
有关更多信息,请参阅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。
存储关系的每个单独的分段文件集。主分支是实际数据所在的位置。还有两个用于元数据的辅助分支:空闲空间映射和可见性映射。未记录关系也有一个初始化分支。
一种存储结构,用于保存表主分支中每个数据页的元数据。每个页的空闲空间映射条目存储可用于未来元组的空闲空间量,并且其结构可以高效地搜索给定大小的新元组的可用空间。
有关更多信息,请参阅第 66.3 节。
一种例程,它接收零个或多个参数,返回零个或多个输出值,并被限制在一个事务中运行。函数作为查询的一部分被调用,例如通过SELECT
。某些函数可以返回集合;这些被称为集合返回函数。
函数也可以用于调用触发器。
有关更多信息,请参阅CREATE FUNCTION。
请参阅UTC。
有关更多信息,请参阅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
命令将表指定为未记录。
一个辅助进程,如果启用,它将数据库事件信息写入当前的日志文件。当达到某些时间或容量相关的标准时,会创建一个新的日志文件。也称为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 中,Class 是关系的古老同义词。
一个与主数据库配对并维护主数据库部分或全部数据副本的数据库。这样做的主要原因是为了增加对该数据的访问,并在主数据库不可用时保持数据的可用性。
将一个服务器上的数据复制到另一个名为副本的服务器的行为。这可以采用物理复制的形式,其中一个服务器上的所有文件更改都逐字复制,或者逻辑复制的形式,其中使用更高级别的表示形式传达定义的数据更改子集。
有关更多信息,请参阅第 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 位宽,因此只能生成大约 40 亿个写入事务 ID;为了使系统运行时间更长,使用了纪元,也为 32 位宽。当计数器达到最大 xid 值时,它从3
开始重新计数(小于该值的值是保留的),并且纪元值递增 1。在某些上下文中,纪元和 xid 值被视为一个单一的 64 位值;有关更多详细信息,请参阅第 67.1 节。
有关更多信息,请参阅第 8.19 节。
在测量运行期间,所有活动会话每秒执行的平均事务数总和。这用作衡量实例性能特征的指标。
一个函数,可以定义为在特定操作(INSERT
、UPDATE
、DELETE
、TRUNCATE
)应用于关系时执行。触发器在其调用语句所在的同一个事务中执行,如果函数失败,则调用语句也失败。
更多信息,请参阅CREATE TRIGGER。
按固定顺序排列的属性集合。该顺序可以由元组所在的表(或其他关系)定义,在这种情况下,元组通常被称为行。它也可以由结果集的结构定义,在这种情况下,它有时被称为记录。
一种在关系上定义的约束,它限制了单个或组合列中允许的值,使得每个值或值的组合只能在关系中出现一次 — 也就是说,关系中没有其他行包含相同的值。
因为null 值不被认为是彼此相等的,所以允许存在多行具有 null 值而不会违反唯一约束。
某些关系的属性,对其进行的更改不会反映在WAL中。这会禁用这些关系的复制和崩溃恢复。
未日志记录的表主要用于存储必须在进程之间共享的瞬态工作数据。
临时表始终是未日志记录的。
一个SQL用于修改指定表中可能已存在的行的命令。它不能创建或删除行。
更多信息,请参阅UPDATE。
将本地数据库中的登录凭据转换为由外部数据包装器定义的远程数据系统中的凭据。
更多信息,请参阅CREATE USER MAPPING。
世界协调时间,是主要的全球时间参考,大约是零经度子午线处的时间。通常但不准确地称为 GMT(格林威治标准时间)。
从表或物化视图中删除过时的元组版本的过程,以及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 节。
更多信息,请参阅第 19.5 节。
一种在查询中使用的函数类型,它应用于查询的结果集的分区;函数的结果基于在同一分区或帧的行中找到的值。
所有聚合函数都可以用作窗口函数,但窗口函数也可以用于,例如,为分区中的每行赋予排名。也称为分析函数。
更多信息,请参阅第 3.5 节。
如果您发现文档中的任何内容不正确,与您对特定功能的体验不符或需要进一步澄清,请使用此表单报告文档问题。