这是一个术语列表,以及它们在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 千兆字节)限制,因此如果关系超过该大小,则将其拆分为多个段。
更多信息,请参见 第 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。
一组使用公共共享内存区域进行通信的后端和辅助进程。一个主控进程管理实例;一个实例管理一个数据库集群及其所有数据库。只要它们的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。
一种存储结构,用于保存有关表的第一个分支的每个数据页的元数据。每个页面的可见性映射条目存储两个位:第一个位(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 节。