这是一个术语以及它们在PostgreSQL和一般关系数据库系统上下文中的含义的列表。
原子性(Atomicity), 一致性(Consistency), 隔离性(Isolation), 和 持久性(Durability). 这组数据库事务属性是为了保证并发操作的有效性,并且在发生错误、电源故障等情况下也是如此。
一种结合(aggregates)多个输入值的function,例如通过计数、平均或相加,产生一个输出值。
更多信息, 请参见 第 9.21 节。
从tables和其他relations中的数据中收集统计信息的过程, 以帮助 query planner做出关于如何执行queries的决策。
(不要把这个术语与EXPLAIN命令的ANALYZE
选项搞混淆。)
更多信息,请参见ANALYZE.
transaction的一种属性,它的所有操作要么作为单个单元完成,要么不操作。 此外,如果在事务执行过程中发生了系统故障,恢复后不会看到部分结果。这是ACID的属性之一。
更多信息,请参见 第 25.1.6 节。
instance中的进程,该进程运行系统或用户提供的代码。 作为PostgreSQL中的一些特性的基础架构,例如logical replication和parallel queries。 此外,Extensions可以添加自定义的后台工作者进程。
更多信息,参见 第 48 章。
将脏data pages从shared memory写入文件系统的进程。 它会定期地唤醒,但只在很短的周期内工作,以便将大开销的I/O活动分布在一段时间内,避免产生可能阻塞其他进程的更大的I/O峰值。
更多信息,参见 第 20.4.5 节.
所有database cluster 文件的二进制拷贝。 通过pg_basebackup工具生成。 它可以结合WAL文件作为恢复、日志传送或流式复制的起点。
数据页中不包含当前行版本的空间,例如未使用(空闲)空间或过时的行版本。
更多信息,参见 CREATE CAST。
SQL标准使用这个术语来表示PostgreSQL术语中所谓的database。
更多信息,参见 第 23.1 节。
一种定义在 relation上面的constraint类型,以限制一个或多个attributes中允许的值。 检查约束可以引用关系中的同一行的任何属性,但不能引用同一关系的其他行或者其他关系。
更多信息,参见 第 5.4 节.
WAL序列中的一个点,在这个点上可以保证堆和索引数据文件已经被更新,包括所有来自在检查点之前被修改过的shared memory的信息; 一个checkpoint record被写入并刷新到WAL以标记该点。
检查点也是执行到达上述定义的检查点所需的所有操作的行为。
当满足预定义的条件时,如已经过了指定的时间,或者已写入了一定数量的记录,则启动此过程;也可以由用户通过命令CHECKPOINT
来调用。
更多信息,参见 第 30.5 节。
负责执行检查点的专用流程。
见Relation.
在database中完成transaction的行为,以使其他事务可见的并确保他的durability。
更多信息,参见 COMMIT。
这个概念指在database里面在同一时间发生多个独立的操作。 在PostgreSQL中,并发性是由multiversion concurrency control机制来控制的。
客户端进程和backend进程之间的通讯的一个已建成的线路,通常是基于网络,支持session。 这个术语有时候用做为会话的同义词。
更多信息,参见 第 20.3 节。
database中的数据的特性总是遵从于integrity constraints。 事务可能被允许短暂的违反一些约束,在它被提交之前,这样的事务自动被rolled back。 这是ACID属性中的一个。
更多信息,参见 第 5.4 节。
更多信息,参见 第 23.1 节。
数据库和全局SQL对象的一个汇集,以及他们的公用状态和动态元数据。有时被引用为cluster。
在PostgreSQL中,术语cluster有时也用来指一个实例。(不要将这个术语与SQL命令CLUSTER
混淆。)
见Instance.
server文件系统上的基本目录,包含与database cluster相关联的所有数据文件和子目录
(除了tablespaces和可选的WAL)。
环境变量PGDATA
通常用于引用数据目录。
更多信息,参见 第 70.1 节。
用于存储关系数据的基本结构。所有的页面大小相同。数据页往往存储在磁盘上,每个数据页都存储在一个特定的文件中,并且可以被读取到shared buffers,在那里它们可以被修改,变为dirty的。 它们写入磁盘时变得干净。新页面,最初只存在于内存中,在写入之前也是脏的。
SQL数据类型的一个值的内部表示方式。
从给定table或relation中删除rows的SQL命令。
更多信息,参见 DELETE。
保证一旦transaction被committed,即使在系统故障或崩溃后变更仍然存在。这是ACID的特性之一。
更多信息,参见 第 38.17 节。
存储给定relation的数据的一种物理文件。 文件段的大小受配置值的限制(通常为1G比特),所以如果一个关系超过这个大小,它就被分割成多个段。
更多信息,参见 第 70.1 节。
表示本地database中不包含的数据的一种方式,使其看起来就像在本地table(s)中一样。 使用外部数据封装器,可以定义外部foreign server和foreign tables。
更多信息,参见 CREATE FOREIGN DATA WRAPPER。
一种定义在table中的一个或多个columns上的constraint类型, 它需要这些columns中的值标识另一个表中的零或一row(或者,偶尔是相同的)。
foreign tables的命名的集合,它们都使用相同的foreign data wrapper,并具有其他共同的配置值。
更多信息,参见 CREATE SERVER。
一种relation,看起来拥有与常规table相似的rows和columns, 但将通过它的foreign data wrapper转发对数据的请求, 并将返回根据foreign table定义的结构化的result sets。
更更多信息,参见CREATE FOREIGN TABLE。
在被存储的关系中的每个单独分段文件集。main fork是实际数据驻留的地方。 对于元数据还存在两个次要分支:free space map和visibility map。 Unlogged relations也有一个init fork。
一种存储结构,用于保存关于表的主分支的每个数据页的元数据。 每个页面的空闲空间映射条目存储对于未来元组可用的空闲空间数量,并且是结构化的,可以高效地搜索给定大小的新元组的可用空间。
更多信息,参见 第 70.3 节。
一种例程类型,它接收零个或更多参数,返回零个或更多输出值,并被限制在一个事务中运行。
函数被调用作为查询的一部分,例如通过SELECT
。某些函数可以返回 sets;
这些被称为set-returning functions。
更多信息,参见 CREATE FUNCTION。
一个SQL命令,用于允许user或role访问database中的特定对象。
更多信息,参见 GRANT。
包含对于关系的row属性(例如数据)的值。 堆是在关系的main fork中的一个或多个file segments中实现的。
与其他计算机通过网络通信的计算机。这有时被用作server的同义词。 它也用于指运行client processes的计算机。
包含从table或materialized view中派生的数据的relation。 它的内部结构支持对原始数据的快速检索和访问。
更多信息,参见 CREATE INDEX。
更多信息,参见 INSERT。
一组使用公共的共享内存区域进行通信的后端进程和辅助进程。 一个 postmaster process进程管理实例;一个实例管理一个database cluster及其所有数据库。 只要TCP端口不冲突,许多实例可以在同一台server上运行。
实例处理DBMS的所有关键属性:读和写到文件以及共享内存, 确保ACID特性,connections到client processes,特权验证,崩溃恢复,复制等等。
在提交之前,事务的效果对concurrent transactions不可见的属性。这是ACID的特性之一。
更多信息,参见 第 13.2 节。
允许进程限制或阻止对资源同时进行访问的一种机制。
日志文件包含关于事件的人类可读的文本行。例如登录失败、长时间运行的查询,等等。
更多信息,参见 第 25.3 节。
如果对表的更改被发送到WAL,则认为该table被logged。
默认情况下,所有常规表都被记日志。可以将表指定为unlogged,在创建时或通过ALTER TABLE
命令。
如果被激活,该进程将有关数据库事件的信息写入当前log file。 当达到某些依赖于时间或卷的标准时,将创建一个新的日志文件。也叫syslogger。
更多信息,参见 第 20.8 节。
预先计算并存储一些信息的属性,以供以后使用,而不是在运行中计算。
这个术语在materialized view中使用,意思是从视图的查询中导出的数据并与该数据的来源分开存储在磁盘上。
这个术语也用于代指一些多步骤查询,表示执行给定步骤产生的数据存储在内存中(有溢出到磁盘的可能性),这样就可以通过另一个步骤多次读取数据。
由SELECT
语句定义的relation(就像view),
但以与table相同的方式存储数据。它不能通过INSERT
, UPDATE
, 或DELETE
操作进行修改。
更多信息,参见 CREATE MATERIALIZED VIEW。
一种机制,用于允许一些transactions读取和写入相同的行,而不会因一个进程导致其他进程停顿。 在PostgreSQL中,MVCC是通过在tuples被修改时创建副本(versions)来实现的;在可以看到旧版本终止的事务之后,需要删除那些旧版本。
不存在性(non-existence)的概念,是关系数据库理论的中心原则。它表示没有一个确定的值。
大的集合中的几个不相交(不重叠)的子集之一。
对partitioned table的引用:每个表都包含分区表的部分数据的表之一,称为parent。 分区本身是一个表,所以也可以直接查询;同时,分区有时可以是一个分区表,允许创建层次结构。
query中有关的window function, 分区是一种用户定义的标准,它确定该函数可以考虑query's result set的哪些邻近rows。
instance的第一个过程。它启动和管理其他辅助进程,并根据需要创建backend processes。
更多信息,参见 第 19.3 节。
在table或其他relation上定义的unique constraint的一种特殊情况, 它也保证primary key内的所有attributes不会有null值。 顾名思义,每个表只能有一个主键,但也可能有多个惟一的约束,这些约束也不支持空(null-capable)属性。
当两个或多个databases通过replication链接时, 被认为是权威信息源的server称为primary,也称为master。
一种例程。它们的特点是不返回值,并且允许它们执行如COMMIT
和 ROLLBACK
这样的事务语句。它们是通过CALL
命令调用的。
更多信息,参见 CREATE PROCEDURE。
PostgreSQL中用于确定(planning)执行queries的最有效方法的部分。 也称为query optimizer、optimizer或简称为planner。
见Tuple.
见WAL file.
通过foreign key限制一个relation中的数据的一种方法, 使它在另一个relation中必须有匹配的数据。
database中所有对象的通用术语,有名称和以特定顺序定义的attributes列表。 Tables,sequences, views,foreign tables, materialized views、复合类型和indexes都是关系。
更通用的来说,关系是一组元组;例如,查询的结果也是一个关系。
在PostgreSQL中,Class是relation的古老同义词。
与primary数据库配对并维护主数据库部分或全部数据副本的database。 这样做的最主要的原因是允许对该数据进行更大的访问,并在primary服务器不可用时保持数据的可用性。
将一台server上的数据复制到另一台服务器上的行为称为replica。 这可以采用physical replication的形式,其中一个服务器上的所有文件更改都是逐字复制的,或者是logical replication,其中已定义的数据更改子集使用更高层次的表示来传递。
SQL命令完成后从backend process传输到client的relation,
通常是SELECT
,但如果指定了RETURNING
子句,则可以是INSERT
、UPDATE
或DELETE
命令。
结果集是一个关系这一事实意味着一个查询可以用于另一个查询的定义,成为一个subquery。
用于防止指定roles列表对指定database对象集的访问的命令。
更多信息,参见 REVOKE。
instance的访问权限的集合。角色本身是可以授予其他角色的特权。 当多个users需要相同的特权时,这样做通常是为了方便或确保完整性。
更多信息,参见 CREATE ROLE。
撤销自transaction开始以来执行的所有操作的命令。
更多信息,参见 ROLLBACK。
存储在数据库系统中可被调用以执行的一组已定义的指令集合。例程可以用多种编程语言编写。 例程可以是functions(包括返回集的函数和trigger functions)、aggregate functions和procedures。
PostgreSQL自身已经定义了许多例程,但是也可以添加用户定义的例程。
见Tuple.
transaction中步骤序列中的特殊标记。在此时间点之后的数据修改可能会被恢复到保存点的时间。
更多信息,参见 SAVEPOINT。
模式是SQL objects的名称空间,这些对象都驻留在同一个database中。 每个SQL对象必须确切的驻留在一个模式中。
所有系统定义的SQL对象都驻留在模式pg_catalog
中。
更通常地,schema术语用于表示给定database或其子集的所有数据描述(table定义、constraints、注释等)。
更多信息,参见 第 5.9 节。
用于从database请求数据的SQL命令。
通常,SELECT
命令不会以任何方式修改database,但是查询中调用的functions可能会产生修改数据的作用。
更多信息,参见 SELECT。
一种用于生成值的关系类型。通常生成的值是连续的非重复的数字。它们通常用于生成替代的primary key值。
运行PostgreSQL实例的计算机。术语server表示实际硬件、容器或virtual machine。
这个术语有时用于指实例或主机。
允许客户端和后端进行交互的状态,通过connection通信。
由instance的公共进程使用的RAM。 它可以镜像部分database文件,为WAL records提供一个临时区域,并存储其他公共信息。注意,共享内存属于整个实例,而不是单个数据库。
共享内存中最大的部分称为shared buffers,用于镜像组成页面的部分数据文件。 当页面被修改时,它被称为脏页面,直到它被写回文件系统。
更多信息,参见 第 20.4.1 节。
任何可以使用CREATE
命令创建的对象。大多数对象都特定于一个数据库,通常称为local objects。
大多数本地对象都属于它们所被包含的数据库中的特定schema,比如relations(所有类型)、routines(所有类型)、数据类型等。 同一模式中相同类型的对象的名称是强制性要求唯一的。
也存在不属于模式的本地对象;一些例子是extensions、data type casts和foreign data wrappers。 数据库中相同类型的对象的名称必须是唯一的。
其他对象类型,如roles、tablespaces、复制源、逻辑复制的订阅和数据库本身都不是本地SQL对象,因为它们完全存在于任何特定的数据库之外; 它们被称为global objects。在整个数据库集群中这些对象的名称必须是唯一的。
更多信息,参见 第 23.1 节。
定义SQL语言的一系列文档。
更多信息,参见 第 28.2 节。
tables的集合,描述了实例的所有SQL objects的结构。
系统目录位于pg_catalog
模式中。这些表包含内部表示的数据,并且通常不被认为对用户检查有用;
许多用户友好的views(,也在pg_catalog
模式中,
提供了对其中一些信息的更方便的访问,而在模式information_schema
(参见 第 37 章)中存在其他表和视图,它们公开了SQL standard规定的一些相同和额外的信息
更多信息,参见 第 5.9 节。
具有公共数据结构的tuples集合(相同数量的attributes、以同样的顺序、每个位置具有相同的名称和类型)。表是PostgreSQL中最常见的relation形式。
更多信息,参见 CREATE TABLE。
服务器文件系统上的一个已命名位置。所有需要在它们的系统编目中定义上面存储的SQL objects必须属于单个表空间。
最初,一个数据库集群包含一个可用的表空间,它被用作于所有SQL对象的默认表空间,称为pg_default
。
更多信息,参见 第 23.6 节。
在session或transaction的生命周期内存在的Tables,如创建时指定的那样。 其中的数据对其他会话是不可见的,并且不会被logged。临时表经常用于存储多步骤操作的中间数据。
更多信息,参见 CREATE TABLE。
一种将表行的大型属性分割并存储在辅助表中的机制,该表被称为TOAST table。每个具有大型属性的关系都有自己的TOAST表。
更多信息,参见 第 70.2 节。
必须作为单个atomic命令的命令组合:它们都作为单个单元成功或失败,并且它们的效果对其他sessions是不可见的,直到事务完成,甚至更晚,这取决于隔离级别。
更多信息,参见 第 13.2 节。
每个事务在第一次导致数据库修改时所接收到的数字的、唯一的、按顺序分配的标识符。
常缩写为xid。当存储在磁盘上时,xids仅有有32位宽,因此只能生成大约40亿个写事务id;
为了允许系统运行的比那个更长,使用了epochs,也是32位宽。
当计数器达到最大的xid值时,它从3
开始(那以下的值被保留了),epoch增加值为1。
在某些上下文中,epoch和xid值一起被视为单个64位值。
更多信息,参见 第 8.19 节。
每秒执行的平均事务数,在测量运行的所有活动会话中合计。这是被用做衡量实例的性能特性。
当某个操作(INSERT
,UPDATE
, DELETE
,TRUNCATE
)应用于某个relation时,可以被定义执行的function。
触发器与调用它的语句在同一个transaction中执行,如果函数失败,则调用语句也失败。
更多信息,参见 CREATE TRIGGER。
按固定顺序排列的attributes集合。 该顺序可以由包含元组的table(或其他relation)定义, 在这种情况下,元组通常被称为一row。它也可以由结果集的结构定义,在这种情况下,它有时被称为record。
一种relation上定义的constraint, 其限制的值允许在一个列或列的组合,以便每个值或值的组合关系中只能出现一次,也就是说,没有其他关系中的行包含值与之相等。
因为null values不被认为是相等的,所以允许在不违反唯一约束的情况下存在多个空值行。
某些relations的性质,即它们的变化没有反映在WAL中。这将禁用这些关系的复制和崩溃恢复。
非日志表的主要用途是存储必须要跨进程共享的临时工作数据。
用于修改指定table中可能已经存在的rows的SQL命令。它不能创建或删除行。
更多信息,参见 UPDATE。
将本地database中的登录凭据转换为由foreign data wrapper定义的远程数据系统中的凭据。
更多信息,参见 CREATE USER MAPPING。
从表或物化视图中删除过时的tuple versions的过程,以及MVCC的PostgreSQL实现所需的其他密切相关的处理过程。
这可以通过使用VACUUM
命令来启动,但是也可以通过autovacuum进程自动处理。
更多信息,参见第 25.1 节。
由SELECT
语句定义的relation,但没有自己的存储空间。
每当查询引用视图时,视图的定义就会被替换到查询中,就好像用户输入它作为子查询而不是视图的名称。
更多信息,参见 CREATE VIEW。
一种存储结构,用于保存表的主分支的每个数据页的元数据。
每个页面的可视性映射条目存储两个比特:第一个(all-visible
)表示页面中的所有元组对所有事务都可见。
第二个(all-frozen
)表示页面中的所有元组都标记为冻结。
一种保存WAL files副本的过程,目的是创建备份或保持当前的replicas。
更多信息,参见 第 26.3 节。
又称WAL segment或WAL segment file。为WAL提供存储空间的每个按顺序编号的文件。 这些文件都具有相同的预定义大小,并且是按顺序写入的,当它们在多个同时发生的会话中发生时,会将更改穿插在其中。 如果系统崩溃,则按顺序读取文件,并重现每个更改,以将系统恢复到崩溃前的状态。
当checkpoint把每个WAL文件的所有修改写入相应的数据文件后,就可以释放每个WAL文件。 释放文件可以通过删除它,也可以通过更改它的名称以便将来使用,这被称为recycling。
更多信息,参见第 30.6 节。
对单个数据更改的低级描述。它包含足够的信息,以便数据更改可以被重新执行(replayed),在系统故障导致更改丢失的情况下。 WAL记录使用不可打印的二进制格式。
更多信息,参见第 30.6 节。
见WAL file.
将WAL records从shared memory写入WAL files的进程。
更多信息,参见 第 20.5 节。
query中使用的一种function, 用于查询result set的一个partition; 该函数的结果基于在相同分区或框架的rows中找到的值。
所有aggregate functions都可以用作窗口函数,但是窗口函数也可以用来给分区中的每一行排序。也称为analytic functions。
更多信息,参见第 3.5 节。
当用户和系统调用操作发生时,跟踪database cluster中的更改的日志。 它包含许多顺序写入WAL files的独立WAL records。