这是 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 节。
在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
通常用于引用数据目录。
集群的存储空间包括数据目录和任何其他表空间。
更多信息,请参考第 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
命令将表指定为未记录的。
一个辅助进程,如果启用,会将关于数据库事件的信息写入当前的日志文件。当达到某些时间或容量相关的标准时,将创建一个新的日志文件。也称为syslogger。
更多信息,请参阅 第 19.8 节。
WAL 记录的过时术语。
参见日志序列号。
参见主服务器。
某些信息已被预先计算并存储以供以后使用,而不是在运行时计算的属性。
此术语用于物化视图,表示从视图的查询派生的数据与该数据的源分开存储在磁盘上。
此术语也用于指代一些多步骤查询,表示执行给定步骤产生的数据存储在内存中(有可能溢出到磁盘),以便另一个步骤可以多次读取它。
由SELECT
语句定义的关系(就像视图一样),但以与表相同的方式存储数据。它不能通过 INSERT
、UPDATE
、DELETE
或 MERGE
操作进行修改。
更多信息,请参阅CREATE MATERIALIZED VIEW。
一个SQL用于有条件地添加、修改或删除给定表中的行的命令,使用来自源关系的数据。
更多信息,请参阅 MERGE。
一种旨在允许多个事务读取和写入同一行,而不会导致一个进程导致其他进程停顿的机制。在PostgreSQL中,MVCC是通过在修改元组时创建它们的副本(版本)来实现的;在可以看到旧版本的事务终止后,需要删除这些旧版本。
关系数据库理论的核心原则之一,表示不存在的概念。它表示缺少明确的值。
参见查询规划器。
处理执行查询的部分的能力,以利用具有多个服务器上的并行进程的优势CPUs。
较大集合的几个不相交(不重叠)的子集之一。
在引用分区表时:每个包含分区表部分数据的表之一,该表被认为是父表。分区本身是一个表,因此也可以直接查询;同时,分区有时也可以是分区表,从而可以创建层次结构。
一个实例的第一个进程。它启动和管理辅助进程,并按需创建后端进程。
更多信息,请参阅第 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 对象都必须恰好位于一个模式中。
所有系统定义的 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对象都必须属于单个表空间。最初,数据库集群包含一个可用的表空间,称为pg_default
,它被用作所有 SQL 对象的默认值。
有关更多信息,请参阅第 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。
一种存储结构,用于保存表的主分支的每个数据页面的元数据。每个页面的可见性映射条目存储两个位:第一个位 (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 节。
如果您在文档中发现任何不正确的内容,与您特定功能的使用体验不符或需要进一步澄清的内容,请使用此表单报告文档问题。