这是 PostgreSQL 和一般关系数据库系统中术语及其含义的列表。
原子性、一致性、隔离性 和 持久性。数据库事务的这组属性旨在保证并发操作中的有效性,即使在出现错误、电源故障等情况下也是如此。
一种 函数,它组合(聚合)多个输入值,例如通过计数、求平均值或求和,产生单个输出值。
有关更多信息,请参阅 第 9.21 节。
另请参阅 窗口函数(例程)。
PostgreSQL 使用的接口,用于访问表和索引中的数据。这种抽象允许添加对新类型数据存储的支持。
请参阅 窗口函数(例程)。
从 表 和其他 关系 中的数据收集统计信息,以帮助 查询规划器 决定如何执行 查询。
(不要将此术语与 EXPLAIN 命令的 ANALYZE
选项混淆。)
有关更多信息,请参阅 ANALYZE。
在引用 数据项 时:其值不能分解为更小的组件。
事务 的属性,即其所有操作要么作为一个单元完成,要么都不完成。此外,如果在事务执行期间发生系统故障,则恢复后不会显示部分结果。这是ACID属性之一。
元组 中具有特定名称和数据类型的元素。
一组后台进程,它们定期执行 清理 和 分析 操作。辅助进程 协调工作并且始终存在(除非禁用了自动清理),称为 自动清理启动器,而执行任务的进程称为 自动清理工作进程。
有关更多信息,请参阅 第 24.1.6 节。
实例 中的一个进程,负责该实例的一些特定后台任务。辅助进程包括 自动清理启动器(但不包括自动清理工作进程)、后台写入器、检查点进程、日志记录器、启动进程、WAL 归档器、WAL 接收器(但不包括 WAL 发送器)、WAL 汇总器 和 WAL 写入器。
实例 中的进程,它运行系统或用户提供的代码。作为 PostgreSQL 中多个功能的基础结构,例如 逻辑复制 和 并行查询。此外,扩展 可以添加自定义后台工作进程。
有关更多信息,请参阅 第 46 章。
一个 辅助进程,它将脏的 数据页 从 共享内存 写入文件系统。它会定期唤醒,但每次只工作一小段时间,以便将其昂贵的I/O活动分布在一段时间内,以避免产生更大的I/O峰值,这可能会阻塞其他进程。
有关更多信息,请参阅 第 19.4.5 节。
所有 数据库集群 文件的二进制副本。它由工具 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 节。
预写式日志序列中的一个点,在该点可以保证堆和索引数据文件已使用在该检查点之前修改的共享内存中的所有信息进行了更新;将检查点记录写入并刷新到预写式日志以标记该点。
检查点也是执行达到上述定义的检查点所需的所有操作的行为。当满足预定义的条件(例如,经过了指定的时间量,或者写入了特定数量的记录)时,将启动此过程;或者用户可以使用CHECKPOINT
命令调用它。
更多信息请参见第 28.5 节。
参见关系。
拥有数据目录并在其下运行postgres
进程的操作系统用户。要求该用户在创建新的数据库集群之前存在。
在具有root
用户的操作系统上,不允许该用户成为集群所有者。
最终确定数据库内事务的操作,这使其对其他事务可见,并确保其持久性。
更多信息请参见COMMIT。
客户端进程与后端进程之间建立的通信线路(通常通过网络),支持会话。该术语有时用作会话的同义词。
更多信息请参见第 19.3 节。
数据库中的数据始终符合完整性约束的属性。可以允许事务在提交之前暂时违反某些约束,但是如果此类违反在提交时未解决,则此类事务将自动回滚。这是ACID属性之一。
更多信息请参见第 5.5 节。
如果启用,则累积有关实例活动的统计信息的系统。
更多信息请参见第 27.2 节。
参见数据目录。
本地 SQL 对象的命名集合。
更多信息请参见第 22.1 节。
数据库和全局 SQL 对象及其通用静态和动态元数据的集合。有时称为集群。使用initdb程序创建数据库集群。
在PostgreSQL中,术语集群有时也用于指代实例。(不要将此术语与 SQL 命令CLUSTER
混淆)。
参见实例。
具有超级用户状态的角色(请参见第 21.2 节)。
通常称为超级用户。
服务器文件系统上的基本目录,其中包含与数据库集群关联的所有数据文件和子目录(表空间以及可选的预写式日志除外)。环境变量PGDATA
通常用于引用数据目录。
集群的存储空间包括数据目录以及任何其他表空间。
更多信息请参见第 65.1 节。
用于存储关系数据的基本结构。所有页面的大小均相同。数据页通常存储在磁盘上(每个数据页都在特定的文件中),并且可以读取到共享缓冲区中,在共享缓冲区中可以对其进行修改,从而变为脏页。写入磁盘后,它们将变为干净页。最初仅存在于内存中的新页在写入之前也是脏页。
一个值的内部表示形式SQL数据类型。
更多信息请参见DELETE。
基于另一种基础数据类型的用户定义数据类型。它的行为与基础类型相同,只是可能会限制允许值的集合。
更多信息请参见第 8.18 节。
参见事务 ID。
可以在实例上安装的软件附加程序包,用于获取额外的功能。
更多信息请参见第 36.17 节。
为给定关系存储数据的物理文件。文件段的大小受配置值(通常为 1 GB)的限制,因此,如果关系的大小超过该值,则将其拆分为多个段。
更多信息请参见第 65.1 节。
(不要将此术语与类似的术语WAL 段混淆)。
一种表示本地数据库中未包含的数据的方式,使其看起来就像在本地表中一样。使用外部数据包装器,可以定义外部服务器和外部表。
更多信息请参见 CREATE FOREIGN DATA WRAPPER。
一个命名的外部表集合,它们都使用相同的外部数据包装器并具有其他共同的配置值。
更多信息请参见 CREATE SERVER。
一种关系,它看起来像具有行和列,类似于常规表,但会通过其外部数据包装器转发对数据的请求,该包装器将根据外部表的定义返回结构化的结果集。
更多信息请参见 CREATE FOREIGN TABLE。
存储关系的每个单独的段文件集。主分叉是实际数据所在的位置。还有两个用于元数据的辅助分叉:空闲空间映射和可见性映射。未记录关系也有一个初始化分叉。
一种存储结构,用于保存有关表主分叉的每个数据页的元数据。每个页面的空闲空间映射条目存储可用于未来元组的空闲空间量,并进行结构化以有效地搜索给定大小的新元组的可用空间。
更多信息请参见第 65.3 节。
一种例程,它接收零个或多个参数,返回零个或多个输出值,并且被约束在一次事务中运行。函数作为查询的一部分被调用,例如通过SELECT
。某些函数可以返回结果集;这些被称为集返回函数。
函数也可用于调用触发器。
更多信息请参见 CREATE FUNCTION。
更多信息请参见 GRANT。
包含从表或物化视图派生的数据的关系。其内部结构支持快速检索和访问原始数据。
更多信息请参见 CREATE INDEX。
一种特殊的基础备份,对于某些文件,它可能只包含自上次备份以来修改过的页面,而不是每个文件的全部内容。像基础备份一样,它是由工具pg_basebackup生成的。
要恢复增量备份,请使用pg_combinebackup工具,该工具将增量备份与基础备份相结合。之后,恢复可以使用WAL将数据库集群恢复到一致状态。
更多信息请参见第 25.3.3 节。
一个SQL用于将新数据添加到表中的命令。
更多信息请参见 INSERT。
一组使用公共共享内存区域进行通信的后端和辅助进程。一个Postmaster 进程管理该实例;一个实例管理一个数据库集群及其所有数据库。只要它们的TCP端口不冲突,许多实例就可以在同一个服务器上运行。
实例处理DBMS的所有关键功能:对文件和共享内存的读写访问,对ACID属性的保证、与客户端进程的连接、权限验证、崩溃恢复、复制等。
在事务提交之前,并发事务看不到该事务的影响的属性。这是ACID属性之一。
更多信息请参见第 13.2 节。
一种允许进程限制或阻止对资源的并发访问的机制。
日志文件包含关于事件的人类可读文本行。例如登录失败、长时间运行的查询等。
更多信息请参见第 24.3 节。
如果表的更改被发送到WAL,则该表被视为已记录。默认情况下,所有常规表都被记录。可以在创建时或通过ALTER TABLE
命令将表指定为未记录。
一种辅助进程,如果启用,它会将有关数据库事件的信息写入当前的日志文件。当达到某些时间或数量相关的条件时,将创建一个新的日志文件。也称为系统日志记录器。
更多信息请参见第 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 表。
有关更多信息,请参阅 第 65.2 节。
必须作为单个 原子 命令执行的命令组合:它们全部成功或全部失败,并且它们的影响对其他 会话 不可见,直到事务完成,甚至可能更晚,具体取决于隔离级别。
更多信息请参见第 13.2 节。
每个事务在首次导致数据库修改时接收到的数字、唯一、顺序分配的标识符。通常缩写为 xid。当存储在磁盘上时,xid 只有 32 位宽,因此只能生成大约 40 亿个写事务 ID;为了允许系统运行更长时间,使用 纪元,也是 32 位宽。当计数器达到最大 xid 值时,它从 3
(该值以下的值是保留的)重新开始,并且纪元值增加 1。在某些情况下,纪元和 xid 值一起被视为单个 64 位值;有关更多详细信息,请参阅 第 66.1 节。
有关更多信息,请参阅 第 8.19 节。
每秒执行的平均事务数,总计所有在测量运行期间处于活动状态的会话。这用作实例性能特征的度量。
一个 函数,可以定义为在对 关系 应用特定操作(INSERT
、UPDATE
、DELETE
、TRUNCATE
)时执行。触发器在调用它的语句的同一 事务 中执行,如果函数失败,则调用语句也会失败。
有关更多信息,请参阅 CREATE TRIGGER。
按固定顺序排列的 属性 的集合。该顺序可以由包含元组的 表(或其他 关系)定义,在这种情况下,元组通常称为 行。它也可以由结果集的结构定义,在这种情况下,它有时称为 记录。
在 关系 上定义的一种 约束,它限制一个或多个列中允许的值,以便每个值或值组合只能在关系中出现一次,也就是说,关系中没有其他行包含等于这些值的值。
因为 空值 不被认为彼此相等,所以允许多个具有空值的行列存在而不违反唯一约束。
某些 关系 的属性,即对它们的更改不会反映在 WAL 中。这将禁用这些关系的复制和崩溃恢复。
未记录表的主要用途是存储必须跨进程共享的瞬态工作数据。
临时表 始终是未记录的。
一个SQL用于修改指定 表 中可能已存在的 行 的命令。它不能创建或删除行。
有关更多信息,请参阅 UPDATE。
将本地 数据库 中的登录凭据转换为由 外部数据封装器 定义的远程数据系统中的凭据。
有关更多信息,请参阅 CREATE USER MAPPING。
从表或物化视图中删除过时的 元组版本 的过程,以及 PostgreSQL 的 MVCC 实现所需的其他密切相关的处理。这可以通过使用 VACUUM
命令启动,但也可以通过 自动清理 进程自动处理。
有关更多信息,请参阅 第 24.1 节 。
由 SELECT
语句定义但没有自身存储的 关系。每当查询引用视图时,视图的定义都会被替换到查询中,就像用户将其键入为子查询而不是视图的名称一样。
有关更多信息,请参阅 CREATE VIEW。
一种存储结构,用于保存有关表主分叉的每个数据页的元数据。每个页面的可见性映射条目存储两位:第一个(全部可见
)表示页面中的所有元组对所有事务都可见。第二个(全部冻结
)表示页面中的所有元组都被标记为冻结。
请参阅 预写式日志。
一个 辅助进程,如果启用,它会保存 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 文件。
如果您在文档中发现任何不正确的地方、与您对特定功能的体验不符或需要进一步说明,请使用此表单报告文档问题。