1 <appendix id=
"glossary">
2 <title>Glossary
</title>
4 This is a list of terms and their meaning in the context of
5 <productname>PostgreSQL
</productname> and relational database
10 <glossentry id=
"glossary-acid">
11 <glossterm>ACID
</glossterm>
14 <glossterm linkend=
"glossary-atomicity">Atomicity
</glossterm>,
15 <glossterm linkend=
"glossary-consistency">Consistency
</glossterm>,
16 <glossterm linkend=
"glossary-isolation">Isolation
</glossterm>, and
17 <glossterm linkend=
"glossary-durability">Durability
</glossterm>.
18 This set of properties of database transactions is intended to
19 guarantee validity in concurrent operation and even in event of
20 errors, power failures, etc.
25 <glossentry id=
"glossary-aggregate">
26 <glossterm>Aggregate function (routine)
</glossterm>
29 A
<glossterm linkend=
"glossary-function">function
</glossterm> that
30 combines (
<firstterm>aggregates
</firstterm>) multiple input values,
31 for example by counting, averaging or adding,
32 yielding a single output value.
35 For more information, see
36 <xref linkend=
"functions-aggregate"/>.
38 <glossseealso otherterm=
"glossary-window-function" />
42 <glossentry id=
"glossary-am">
43 <glossterm>Access Method
</glossterm>
46 Interfaces which
<productname>PostgreSQL
</productname> use in order to
47 access data in tables and indexes. This abstraction allows for adding
48 support for new types of data storage.
51 For more information, see
<xref linkend=
"tableam" /> and
52 <xref linkend=
"indexam" />.
58 <glossterm>Analytic function
</glossterm>
59 <glosssee otherterm=
"glossary-window-function" />
62 <glossentry id=
"glossary-analyze">
63 <glossterm>Analyze (operation)
</glossterm>
66 The act of collecting statistics from data in
67 <glossterm linkend=
"glossary-table">tables
</glossterm>
68 and other
<glossterm linkend=
"glossary-relation">relations
</glossterm>
69 to help the
<glossterm linkend=
"glossary-planner">query planner
</glossterm>
70 to make decisions about how to execute
71 <glossterm linkend=
"glossary-query">queries
</glossterm>.
74 (Don't confuse this term with the
<literal>ANALYZE
</literal> option
75 to the
<xref linkend=
"sql-explain"/> command.)
78 For more information, see
79 <xref linkend=
"sql-analyze"/>.
84 <glossentry id=
"glossary-atomic">
85 <glossterm>Atomic
</glossterm>
88 In reference to a
<glossterm linkend=
"glossary-datum">datum
</glossterm>:
89 the fact that its value cannot be broken down into smaller
96 <glossterm linkend=
"glossary-transaction">database transaction
</glossterm>:
97 see
<glossterm linkend=
"glossary-atomicity">atomicity
</glossterm>.
102 <glossentry id=
"glossary-atomicity">
103 <glossterm>Atomicity
</glossterm>
106 The property of a
<glossterm linkend=
"glossary-transaction">transaction
</glossterm>
107 that either all its operations complete as a single unit or none do.
108 In addition, if a system failure occurs during the execution of a
109 transaction, no partial results are visible after recovery.
110 This is one of the
<acronym>ACID
</acronym> properties.
115 <glossentry id=
"glossary-attribute">
116 <glossterm>Attribute
</glossterm>
119 An element with a certain name and data type found within a
120 <glossterm linkend=
"glossary-tuple">tuple
</glossterm>.
125 <glossentry id=
"glossary-autovacuum">
126 <glossterm>Autovacuum (process)
</glossterm>
129 A set of background processes that routinely perform
130 <glossterm linkend=
"glossary-vacuum">vacuum
</glossterm>
131 and
<glossterm linkend=
"glossary-analyze">analyze
</glossterm> operations.
132 The
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
133 that coordinates the work and is always present (unless autovacuum
134 is disabled) is known as the
<firstterm>autovacuum launcher
</firstterm>,
135 and the processes that carry out the tasks are known as the
136 <firstterm>autovacuum workers
</firstterm>.
139 For more information, see
140 <xref linkend=
"autovacuum"/>.
145 <glossentry id=
"glossary-auxiliary-proc">
146 <glossterm>Auxiliary process
</glossterm>
149 A process within an
<glossterm linkend=
"glossary-instance">instance
</glossterm>
150 that is in charge of some specific background task for the instance.
151 The auxiliary processes consist of
<!-- in alphabetical order -->
152 <!-- NB: In the code, the autovac launcher doesn't use the auxiliary
153 process scaffolding; however it does behave as one so we list it
154 here anyway. In addition, logger isn't connected to shared memory so
155 most code outside postmaster.c doesn't even consider it a "proc" in
158 the
<glossterm linkend=
"glossary-autovacuum">autovacuum launcher
</glossterm>
159 (but not the autovacuum workers),
160 the
<glossterm linkend=
"glossary-background-writer">background writer
</glossterm>,
161 the
<glossterm linkend=
"glossary-checkpointer">checkpointer
</glossterm>,
162 the
<glossterm linkend=
"glossary-logger">logger
</glossterm>,
163 the
<glossterm linkend=
"glossary-startup-process">startup process
</glossterm>,
164 the
<glossterm linkend=
"glossary-wal-archiver">WAL archiver
</glossterm>,
165 the
<glossterm linkend=
"glossary-wal-receiver">WAL receiver
</glossterm>
166 (but not the
<glossterm linkend=
"glossary-wal-sender">WAL senders
</glossterm>),
167 the
<glossterm linkend=
"glossary-wal-summarizer">WAL summarizer
</glossterm>,
168 and the
<glossterm linkend=
"glossary-wal-writer">WAL writer
</glossterm>.
173 <glossentry id=
"glossary-backend">
174 <glossterm>Backend (process)
</glossterm>
177 Process of an
<glossterm linkend=
"glossary-instance">instance
</glossterm>
178 which acts on behalf of a
<glossterm linkend=
"glossary-session">client session
</glossterm>
179 and handles its requests.
182 (Don't confuse this term with the similar terms
183 <glossterm linkend=
"glossary-background-worker">Background Worker
</glossterm> or
184 <glossterm linkend=
"glossary-background-writer">Background Writer
</glossterm>).
189 <glossentry id=
"glossary-background-worker">
190 <glossterm>Background worker (process)
</glossterm>
193 Process within an
<glossterm linkend=
"glossary-instance">instance
</glossterm>,
194 which runs system- or user-supplied code.
195 Serves as infrastructure for several features in
196 <productname>PostgreSQL
</productname>, such as
197 <glossterm linkend=
"glossary-replication">logical replication
</glossterm>
198 and
<glossterm linkend=
"glossary-parallel-query">parallel queries
</glossterm>.
199 In addition,
<glossterm linkend=
"glossary-extension">Extensions
</glossterm> can add
200 custom background worker processes.
203 For more information, see
204 <xref linkend=
"bgworker"/>.
209 <glossentry id=
"glossary-background-writer">
210 <glossterm>Background writer (process)
</glossterm>
213 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
215 <glossterm linkend=
"glossary-data-page">data pages
</glossterm> from
216 <glossterm linkend=
"glossary-shared-memory">shared memory
</glossterm> to
217 the file system. It wakes up periodically, but works only for a short
218 period in order to distribute its expensive
<acronym>I/O
</acronym>
219 activity over time to avoid generating larger
220 <acronym>I/O
</acronym> peaks which could block other processes.
223 For more information, see
224 <xref linkend=
"runtime-config-resource-background-writer"/>.
229 <glossentry id=
"glossary-basebackup">
230 <glossterm>Base Backup
</glossterm>
234 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>
235 files. It is generated by the tool
<xref linkend=
"app-pgbasebackup"/>.
236 In combination with WAL files it can be used as the starting point
237 for recovery, log shipping, or streaming replication.
242 <glossentry id=
"glossary-bloat">
243 <glossterm>Bloat
</glossterm>
246 Space in data pages which does not contain current row versions,
247 such as unused (free) space or outdated row versions.
252 <glossentry id=
"glossary-bootstrap-superuser">
253 <glossterm>Bootstrap superuser
</glossterm>
256 The first
<glossterm linkend=
"glossary-user">user
</glossterm> initialized in a
257 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>.
260 This user owns all system catalog tables in each database. It is also the role
261 from which all granted permissions originate. Because of these things, this
262 role may not be dropped.
265 This role also behaves as a normal
266 <glossterm linkend=
"glossary-database-superuser">database superuser
</glossterm>,
267 and its superuser status cannot be removed.
272 <glossentry id=
"glossary-buffer-access-strategy">
273 <glossterm>Buffer Access Strategy
</glossterm>
276 Some operations will access a large number of
277 <glossterm linkend=
"glossary-data-page">pages
</glossterm>. A
278 <firstterm>Buffer Access Strategy
</firstterm> helps to prevent these
279 operations from evicting too many pages from
280 <glossterm linkend=
"glossary-shared-memory">shared buffers
</glossterm>.
283 A Buffer Access Strategy sets up references to a limited number of
284 <glossterm linkend=
"glossary-shared-memory">shared buffers
</glossterm> and
285 reuses them circularly. When the operation requires a new page, a victim
286 buffer is chosen from the buffers in the strategy ring, which may require
287 flushing the page's dirty data and possibly also unflushed
288 <glossterm linkend=
"glossary-wal">WAL
</glossterm> to permanent storage.
291 Buffer Access Strategies are used for various operations such as
292 sequential scans of large tables,
<command>VACUUM
</command>,
293 <command>COPY
</command>,
<command>CREATE TABLE AS SELECT
</command>,
294 <command>ALTER TABLE
</command>,
<command>CREATE DATABASE
</command>,
295 <command>CREATE INDEX
</command>, and
<command>CLUSTER
</command>.
300 <glossentry id=
"glossary-cast">
301 <glossterm>Cast
</glossterm>
304 A conversion of a
<glossterm linkend=
"glossary-datum">datum
</glossterm>
305 from its current data type to another data type.
308 For more information, see
309 <xref linkend=
"sql-createcast"/>.
314 <glossentry id=
"glossary-catalog">
315 <glossterm>Catalog
</glossterm>
318 The
<acronym>SQL
</acronym> standard uses this term to
319 indicate what is called a
320 <glossterm linkend=
"glossary-database">database
</glossterm> in
321 <productname>PostgreSQL
</productname>'s terminology.
324 (Don't confuse this term with
325 <glossterm linkend=
"glossary-system-catalog">system catalog
</glossterm>).
328 For more information, see
329 <xref linkend=
"manage-ag-overview"/>.
334 <glossentry id=
"glossary-check-constraint">
335 <glossterm>Check constraint
</glossterm>
338 A type of
<glossterm linkend=
"glossary-constraint">constraint
</glossterm>
339 defined on a
<glossterm linkend=
"glossary-relation">relation
</glossterm>
340 which restricts the values allowed in one or more
341 <glossterm linkend=
"glossary-attribute">attributes
</glossterm>. The
342 check constraint can make reference to any attribute of the same row in
343 the relation, but cannot reference other rows of the same relation or
347 For more information, see
348 <xref linkend=
"ddl-constraints"/>.
353 <glossentry id=
"glossary-checkpoint">
354 <glossterm>Checkpoint
</glossterm>
357 A point in the
<glossterm linkend=
"glossary-wal">WAL
</glossterm> sequence
358 at which it is guaranteed that the heap and index data files have been
359 updated with all information from
360 <glossterm linkend=
"glossary-shared-memory">shared memory
</glossterm>
361 modified before that checkpoint;
362 a
<firstterm>checkpoint record
</firstterm> is written and flushed to WAL
366 A checkpoint is also the act of carrying out all the actions that
367 are necessary to reach a checkpoint as defined above.
368 This process is initiated when predefined conditions are met,
369 such as a specified amount of time has passed, or a certain volume
370 of records has been written; or it can be invoked by the user
371 with the command
<command>CHECKPOINT
</command>.
374 For more information, see
375 <xref linkend=
"wal-configuration"/>.
380 <glossentry id=
"glossary-checkpointer">
381 <glossterm>Checkpointer (process)
</glossterm>
384 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
385 that is responsible for executing
386 <glossterm linkend=
"glossary-checkpoint">checkpoints
</glossterm>.
392 <glossterm>Class (archaic)
</glossterm>
393 <glosssee otherterm=
"glossary-relation" />
396 <glossentry id=
"glossary-client">
397 <glossterm>Client (process)
</glossterm>
400 Any process, possibly remote, that establishes a
401 <glossterm linkend=
"glossary-session">session
</glossterm>
402 by
<glossterm linkend=
"glossary-connection">connecting
</glossterm> to an
403 <glossterm linkend=
"glossary-instance">instance
</glossterm>
404 to interact with a
<glossterm linkend=
"glossary-database">database
</glossterm>.
409 <glossentry id=
"glossary-cluster-owner">
410 <glossterm>Cluster owner
</glossterm>
413 The operating system user that owns the
414 <glossterm linkend=
"glossary-data-directory">data directory
</glossterm>
415 and under which the
<literal>postgres
</literal> process is run.
416 It is required that this user exist prior to creating a new
417 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>.
420 On operating systems with a
<literal>root
</literal> user,
421 said user is not allowed to be the cluster owner.
426 <glossentry id=
"glossary-column">
427 <glossterm>Column
</glossterm>
430 An
<glossterm linkend=
"glossary-attribute">attribute
</glossterm> found in
431 a
<glossterm linkend=
"glossary-table">table
</glossterm> or
432 <glossterm linkend=
"glossary-view">view
</glossterm>.
437 <glossentry id=
"glossary-commit">
438 <glossterm>Commit
</glossterm>
441 The act of finalizing a
442 <glossterm linkend=
"glossary-transaction">transaction
</glossterm> within
443 the
<glossterm linkend=
"glossary-database">database
</glossterm>, which
444 makes it visible to other transactions and assures its
445 <glossterm linkend=
"glossary-durability">durability
</glossterm>.
448 For more information, see
449 <xref linkend=
"sql-commit"/>.
454 <glossentry id=
"glossary-concurrency">
455 <glossterm>Concurrency
</glossterm>
458 The concept that multiple independent operations happen within the
459 <glossterm linkend=
"glossary-database">database
</glossterm> at the same time.
460 In
<productname>PostgreSQL
</productname>, concurrency is controlled by
461 the
<glossterm linkend=
"glossary-mvcc">multiversion concurrency control
</glossterm>
467 <glossentry id=
"glossary-connection">
468 <glossterm>Connection
</glossterm>
471 An established line of communication between a client process and a
472 <glossterm linkend=
"glossary-backend">backend
</glossterm> process,
473 usually over a network, supporting a
474 <glossterm linkend=
"glossary-session">session
</glossterm>. This term is
475 sometimes used as a synonym for session.
478 For more information, see
479 <xref linkend=
"runtime-config-connection"/>.
484 <glossentry id=
"glossary-consistency">
485 <glossterm>Consistency
</glossterm>
488 The property that the data in the
489 <glossterm linkend=
"glossary-database">database
</glossterm>
490 is always in compliance with
491 <glossterm linkend=
"glossary-constraint">integrity constraints
</glossterm>.
492 Transactions may be allowed to violate some of the constraints
493 transiently before it commits, but if such violations are not resolved
494 by the time it commits, such a transaction is automatically
495 <glossterm linkend=
"glossary-rollback">rolled back
</glossterm>.
496 This is one of the
<acronym>ACID
</acronym> properties.
501 <glossentry id=
"glossary-constraint">
502 <glossterm>Constraint
</glossterm>
505 A restriction on the values of data allowed within a
506 <glossterm linkend=
"glossary-table">table
</glossterm>,
507 or in attributes of a
508 <glossterm linkend=
"glossary-domain">domain
</glossterm>.
511 For more information, see
512 <xref linkend=
"ddl-constraints"/>.
517 <glossentry id=
"glossary-cumulative-statistics">
518 <glossterm>Cumulative Statistics System
</glossterm>
521 A system which, if enabled, accumulates statistical information
522 about the
<glossterm linkend=
"glossary-instance">instance
</glossterm>'s
526 For more information, see
527 <xref linkend=
"monitoring-stats"/>.
533 <glossterm>Data area
</glossterm>
534 <glosssee otherterm=
"glossary-data-directory" />
537 <glossentry id=
"glossary-database">
538 <glossterm>Database
</glossterm>
541 A named collection of
542 <glossterm linkend=
"glossary-sql-object">local SQL objects
</glossterm>.
545 For more information, see
546 <xref linkend=
"manage-ag-overview"/>.
551 <glossentry id=
"glossary-db-cluster">
552 <glossterm>Database cluster
</glossterm>
555 A collection of databases and global SQL objects,
556 and their common static and dynamic metadata.
557 Sometimes referred to as a
558 <firstterm>cluster
</firstterm>.
559 A database cluster is created using the
560 <xref linkend=
"app-initdb" /> program.
563 In
<productname>PostgreSQL
</productname>, the term
564 <firstterm>cluster
</firstterm> is also sometimes used to refer to an instance.
565 (Don't confuse this term with the SQL command
<command>CLUSTER
</command>.)
568 See also
<glossterm linkend=
"glossary-cluster-owner">cluster owner
</glossterm>,
569 the operating-system owner of a cluster,
570 and
<glossterm linkend=
"glossary-bootstrap-superuser">bootstrap superuser
</glossterm>,
571 the
<productname>PostgreSQL
</productname> owner of a cluster.
577 <glossterm>Database server
</glossterm>
578 <glosssee otherterm=
"glossary-instance" />
581 <glossentry id=
"glossary-database-superuser">
582 <glossterm>Database superuser
</glossterm>
585 A role having
<firstterm>superuser status
</firstterm>
586 (see
<xref linkend=
"role-attributes"/>).
589 Frequently referred to as
<firstterm>superuser
</firstterm>.
594 <glossentry id=
"glossary-data-directory">
595 <glossterm>Data directory
</glossterm>
598 The base directory on the file system of a
599 <glossterm linkend=
"glossary-server">server
</glossterm> that contains all
600 data files and subdirectories associated with a
601 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>
602 (with the exception of
603 <glossterm linkend=
"glossary-tablespace">tablespaces
</glossterm>,
604 and optionally
<glossterm linkend=
"glossary-wal">WAL
</glossterm>).
605 The environment variable
<literal>PGDATA
</literal> is commonly used to
606 refer to the data directory.
609 A
<glossterm linkend=
"glossary-db-cluster">cluster
</glossterm>'s storage
610 space comprises the data directory plus any additional tablespaces.
613 For more information, see
614 <xref linkend=
"storage-file-layout"/>.
619 <glossentry id=
"glossary-data-page">
620 <glossterm>Data page
</glossterm>
623 The basic structure used to store relation data.
624 All pages are of the same size.
625 Data pages are typically stored on disk, each in a specific file,
626 and can be read to
<glossterm linkend=
"glossary-shared-memory">shared buffers
</glossterm>
627 where they can be modified, becoming
628 <firstterm>dirty
</firstterm>. They become clean when written
629 to disk. New pages, which initially exist in memory only, are also
635 <glossentry id=
"glossary-datum">
636 <glossterm>Datum
</glossterm>
639 The internal representation of one value of an
<acronym>SQL
</acronym>
645 <glossentry id=
"glossary-delete">
646 <glossterm>Delete
</glossterm>
649 An
<acronym>SQL
</acronym> command which removes
650 <glossterm linkend=
"glossary-tuple">rows
</glossterm> from a given
651 <glossterm linkend=
"glossary-table">table
</glossterm>
652 or
<glossterm linkend=
"glossary-relation">relation
</glossterm>.
655 For more information, see
656 <xref linkend=
"sql-delete"/>.
661 <glossentry id=
"glossary-domain">
662 <glossterm>Domain
</glossterm>
665 A user-defined data type that is based on another underlying data type.
666 It acts the same as the underlying type except for possibly restricting
667 the set of allowed values.
670 For more information, see
<xref linkend=
"domains"/>.
675 <glossentry id=
"glossary-durability">
676 <glossterm>Durability
</glossterm>
679 The assurance that once a
680 <glossterm linkend=
"glossary-transaction">transaction
</glossterm> has
681 been
<glossterm linkend=
"glossary-commit">committed
</glossterm>, the
682 changes remain even after a system failure or crash.
683 This is one of the
<acronym>ACID
</acronym> properties.
689 <glossterm>Epoch
</glossterm>
690 <glosssee otherterm=
"glossary-xid" />
693 <glossentry id=
"glossary-extension">
694 <glossterm>Extension
</glossterm>
697 A software add-on package that can be installed on an
698 <glossterm linkend=
"glossary-instance">instance
</glossterm> to
702 For more information, see
703 <xref linkend=
"extend-extensions" />.
708 <glossentry id=
"glossary-file-segment">
709 <glossterm>File segment
</glossterm>
712 A physical file which stores data for a given
713 <glossterm linkend=
"glossary-relation">relation
</glossterm>.
714 File segments are limited in size by a configuration value
715 (typically
1 gigabyte),
716 so if a relation exceeds that size, it is split into multiple segments.
719 For more information, see
720 <xref linkend=
"storage-file-layout"/>.
723 (Don't confuse this term with the similar term
724 <glossterm linkend=
"glossary-wal-file">WAL segment
</glossterm>).
729 <glossentry id=
"glossary-foreign-data-wrapper">
730 <glossterm>Foreign data wrapper
</glossterm>
733 A means of representing data that is not contained in the local
734 <glossterm linkend=
"glossary-database">database
</glossterm> so that it appears as if were in local
735 <glossterm linkend=
"glossary-table">table(s)
</glossterm>. With a foreign data wrapper it is
736 possible to define a
<glossterm linkend=
"glossary-foreign-server">foreign server
</glossterm> and
737 <glossterm linkend=
"glossary-foreign-table">foreign tables
</glossterm>.
740 For more information, see
741 <xref linkend=
"sql-createforeigndatawrapper"/>.
746 <glossentry id=
"glossary-foreign-key">
747 <glossterm>Foreign key
</glossterm>
750 A type of
<glossterm linkend=
"glossary-constraint">constraint
</glossterm>
751 defined on one or more
<glossterm linkend=
"glossary-column">columns
</glossterm>
752 in a
<glossterm linkend=
"glossary-table">table
</glossterm> which
753 requires the value(s) in those
<glossterm linkend=
"glossary-column">columns
</glossterm> to
754 identify zero or one
<glossterm linkend=
"glossary-tuple">row
</glossterm>
755 in another (or, infrequently, the same)
756 <glossterm linkend=
"glossary-table">table
</glossterm>.
761 <glossentry id=
"glossary-foreign-server">
762 <glossterm>Foreign server
</glossterm>
765 A named collection of
766 <glossterm linkend=
"glossary-foreign-table">foreign tables
</glossterm> which
768 <glossterm linkend=
"glossary-foreign-data-wrapper">foreign data wrapper
</glossterm>
769 and have other configuration values in common.
772 For more information, see
773 <xref linkend=
"sql-createserver"/>.
778 <glossentry id=
"glossary-foreign-table">
779 <glossterm>Foreign table (relation)
</glossterm>
782 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> which appears to have
783 <glossterm linkend=
"glossary-tuple">rows
</glossterm> and
784 <glossterm linkend=
"glossary-column">columns
</glossterm> similar to a
785 regular
<glossterm linkend=
"glossary-table">table
</glossterm>, but will forward
786 requests for data through its
787 <glossterm linkend=
"glossary-foreign-data-wrapper">foreign data wrapper
</glossterm>,
788 which will return
<glossterm linkend=
"glossary-result-set">result sets
</glossterm>
789 structured according to the definition of the
790 <glossterm linkend=
"glossary-foreign-table">foreign table
</glossterm>.
793 For more information, see
794 <xref linkend=
"sql-createforeigntable"/>.
799 <glossentry id=
"glossary-fork">
800 <glossterm>Fork
</glossterm>
803 Each of the separate segmented file sets in which a relation is stored.
804 The
<firstterm>main fork
</firstterm> is where the actual data resides.
805 There also exist two secondary forks for metadata:
806 the
<glossterm linkend=
"glossary-fsm">free space map
</glossterm>
807 and the
<glossterm linkend=
"glossary-vm">visibility map
</glossterm>.
808 <glossterm linkend=
"glossary-unlogged">Unlogged relations
</glossterm>
809 also have an
<firstterm>init fork
</firstterm>.
814 <glossentry id=
"glossary-fsm">
815 <glossterm>Free space map (fork)
</glossterm>
818 A storage structure that keeps metadata about each data page of a table's
819 main fork. The free space map entry for each page stores the
820 amount of free space that's available for future tuples, and is structured
821 to be efficiently searched for available space for a new tuple of a given
825 For more information, see
826 <xref linkend=
"storage-fsm"/>.
831 <glossentry id=
"glossary-function">
832 <glossterm>Function (routine)
</glossterm>
835 A type of routine that receives zero or more arguments, returns zero or more
836 output values, and is constrained to run within one transaction.
837 Functions are invoked as part of a query, for example via
838 <command>SELECT
</command>.
839 Certain functions can return
840 <glossterm linkend=
"glossary-result-set">sets
</glossterm>; those are
841 called
<firstterm>set-returning functions
</firstterm>.
844 Functions can also be used for
845 <glossterm linkend=
"glossary-trigger">triggers
</glossterm> to invoke.
848 For more information, see
849 <xref linkend=
"sql-createfunction"/>.
854 <glossentry id=
"glossary-grant">
855 <glossterm>Grant
</glossterm>
858 An
<acronym>SQL
</acronym> command that is used to allow a
859 <glossterm linkend=
"glossary-user">user
</glossterm> or
860 <glossterm linkend=
"glossary-role">role
</glossterm> to access
861 specific objects within the
<glossterm linkend=
"glossary-database">database
</glossterm>.
864 For more information, see
865 <xref linkend=
"sql-grant"/>.
870 <glossentry id=
"glossary-heap">
871 <glossterm>Heap
</glossterm>
874 Contains the values of
<glossterm linkend=
"glossary-tuple">row
</glossterm>
875 attributes (i.e., the data) for a
876 <glossterm linkend=
"glossary-relation">relation
</glossterm>.
877 The heap is realized within one or more
878 <glossterm linkend=
"glossary-file-segment">file segments
</glossterm>
879 in the relation's
<glossterm linkend=
"glossary-fork">main fork
</glossterm>.
884 <glossentry id=
"glossary-host">
885 <glossterm>Host
</glossterm>
888 A computer that communicates with other computers over a network.
889 This is sometimes used as a synonym for
890 <glossterm linkend=
"glossary-server">server
</glossterm>.
891 It is also used to refer to a computer where
892 <glossterm linkend=
"glossary-client">client processes
</glossterm> run.
897 <glossentry id=
"glossary-index">
898 <glossterm>Index (relation)
</glossterm>
901 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> that contains
902 data derived from a
<glossterm linkend=
"glossary-table">table
</glossterm>
903 or
<glossterm linkend=
"glossary-materialized-view">materialized view
</glossterm>.
904 Its internal structure supports fast retrieval of and access to the original
908 For more information, see
909 <xref linkend=
"sql-createindex"/>.
913 <glossentry id=
"glossary-incremental-backup">
914 <glossterm>Incremental backup
</glossterm>
917 A special
<glossterm linkend=
"glossary-basebackup">base backup
</glossterm>
918 that for some files may contain only those pages that were modified since
919 a previous backup, as opposed to the full contents of every file. Like
920 base backups, it is generated by the tool
<xref linkend=
"app-pgbasebackup"/>.
923 To restore incremental backups the tool
<xref linkend=
"app-pgcombinebackup"/>
924 is used, which combines incremental backups with a base backup.
925 Afterwards, recovery can use
926 <glossterm linkend=
"glossary-wal">WAL
</glossterm> to bring the
927 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm> to
931 For more information, see
<xref linkend=
"backup-incremental-backup"/>.
936 <glossentry id=
"glossary-insert">
937 <glossterm>Insert
</glossterm>
940 An
<acronym>SQL
</acronym> command used to add new data into a
941 <glossterm linkend=
"glossary-table">table
</glossterm>.
944 For more information, see
945 <xref linkend=
"sql-insert"/>.
950 <glossentry id=
"glossary-instance">
951 <glossterm>Instance
</glossterm>
954 A group of
<glossterm linkend=
"glossary-backend">backend
</glossterm> and
955 <glossterm linkend=
"glossary-auxiliary-proc">auxiliary processes
</glossterm>
956 that communicate using a common shared memory area. One
957 <glossterm linkend=
"glossary-postmaster">postmaster process
</glossterm>
958 manages the instance; one instance manages exactly one
959 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>
960 with all its databases. Many instances can run on the same
961 <glossterm linkend=
"glossary-server">server
</glossterm>
962 as long as their
<acronym>TCP
</acronym> ports do not conflict.
965 The instance handles all key features of a
<acronym>DBMS
</acronym>:
966 read and write access to files and shared memory,
967 assurance of the
<acronym>ACID
</acronym> properties,
968 <glossterm linkend=
"glossary-connection">connections
</glossterm> to
969 <glossterm linkend=
"glossary-client">client processes
</glossterm>,
970 privilege verification, crash recovery, replication, etc.
975 <glossentry id=
"glossary-isolation">
976 <glossterm>Isolation
</glossterm>
979 The property that the effects of a transaction are not visible to
980 <glossterm linkend=
"glossary-concurrency">concurrent transactions
</glossterm>
982 This is one of the
<acronym>ACID
</acronym> properties.
985 For more information, see
<xref linkend=
"transaction-iso" />.
990 <glossentry id=
"glossary-join">
991 <glossterm>Join
</glossterm>
994 An operation and
<acronym>SQL
</acronym> keyword used in
995 <glossterm linkend=
"glossary-query">queries
</glossterm>
996 for combining data from multiple
997 <glossterm linkend=
"glossary-relation">relations
</glossterm>.
1002 <glossentry id=
"glossary-key">
1003 <glossterm>Key
</glossterm>
1006 A means of identifying a
<glossterm linkend=
"glossary-tuple">row
</glossterm> within a
1007 <glossterm linkend=
"glossary-table">table
</glossterm> or
1008 other
<glossterm linkend=
"glossary-relation">relation
</glossterm> by
1009 values contained within one or more
1010 <glossterm linkend=
"glossary-attribute">attributes
</glossterm>
1016 <glossentry id=
"glossary-lock">
1017 <glossterm>Lock
</glossterm>
1020 A mechanism that allows a process to limit or prevent simultaneous
1021 access to a resource.
1026 <glossentry id=
"glossary-log-file">
1027 <glossterm>Log file
</glossterm>
1030 Log files contain human-readable text lines about events.
1031 Examples include login failures, long-running queries, etc.
1034 For more information, see
1035 <xref linkend=
"logfile-maintenance"/>.
1040 <glossentry id=
"glossary-logged">
1041 <glossterm>Logged
</glossterm>
1044 A
<glossterm linkend=
"glossary-table">table
</glossterm> is considered
1045 <glossterm linkend=
"glossary-logged">logged
</glossterm> if changes to it are sent to the
1046 <glossterm linkend=
"glossary-wal">WAL
</glossterm>. By default, all regular
1047 tables are logged. A table can be specified as
1048 <glossterm linkend=
"glossary-unlogged">unlogged
</glossterm> either at
1049 creation time or via the
<command>ALTER TABLE
</command> command.
1054 <glossentry id=
"glossary-logger">
1055 <glossterm>Logger (process)
</glossterm>
1058 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
1059 which, if enabled, writes information about database events into the current
1060 <glossterm linkend=
"glossary-log-file">log file
</glossterm>.
1061 When reaching certain time- or
1062 volume-dependent criteria, a new log file is created.
1063 Also called
<firstterm>syslogger
</firstterm>.
1066 For more information, see
1067 <xref linkend=
"runtime-config-logging"/>.
1072 <glossentry id=
"glossary-log-record">
1073 <glossterm>Log record
</glossterm>
1076 Archaic term for a
<glossterm linkend=
"glossary-wal-record">WAL record
</glossterm>.
1081 <glossentry id=
"glossary-log-sequence-number">
1082 <glossterm>Log sequence number
</glossterm>
1083 <acronym>LSN
</acronym>
1086 Byte offset into the
<glossterm linkend=
"glossary-wal">WAL
</glossterm>,
1087 increasing monotonically with each new
<glossterm
1088 linkend=
"glossary-wal-record">WAL record
</glossterm>.
1091 For more information, see
<link
1092 linkend=
"datatype-pg-lsn"><type>pg_lsn
</type></link> and
<xref
1093 linkend=
"wal-internals"/>.
1099 <glossterm>LSN
</glossterm>
1100 <glosssee otherterm=
"glossary-log-sequence-number"/>
1104 <glossterm>Master (server)
</glossterm>
1105 <glosssee otherterm=
"glossary-primary-server" />
1108 <glossentry id=
"glossary-materialized">
1109 <glossterm>Materialized
</glossterm>
1112 The property that some information has been pre-computed and stored
1113 for later use, rather than computing it on-the-fly.
1116 This term is used in
1117 <glossterm linkend=
"glossary-materialized-view">materialized view
</glossterm>,
1118 to mean that the data derived from the view's query is stored on
1119 disk separately from the sources of that data.
1122 This term is also used to refer to some multi-step queries to mean that
1123 the data resulting from executing a given step is stored in memory
1124 (with the possibility of spilling to disk), so that it can be read multiple
1125 times by another step.
1130 <glossentry id=
"glossary-materialized-view">
1131 <glossterm>Materialized view (relation)
</glossterm>
1134 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> that is
1135 defined by a
<command>SELECT
</command> statement
1136 (just like a
<glossterm linkend=
"glossary-view">view
</glossterm>),
1137 but stores data in the same way that a
1138 <glossterm linkend=
"glossary-table">table
</glossterm> does. It cannot be
1139 modified via
<command>INSERT
</command>,
<command>UPDATE
</command>,
1140 <command>DELETE
</command>, or
<command>MERGE
</command> operations.
1143 For more information, see
1144 <xref linkend=
"sql-creatematerializedview"/>.
1149 <glossentry id=
"glossary-merge">
1150 <glossterm>Merge
</glossterm>
1153 An
<acronym>SQL
</acronym> command used to conditionally add, modify,
1154 or remove
<glossterm linkend=
"glossary-tuple">rows
</glossterm>
1155 in a given
<glossterm linkend=
"glossary-table">table
</glossterm>,
1156 using data from a source
1157 <glossterm linkend=
"glossary-relation">relation
</glossterm>.
1160 For more information, see
1161 <xref linkend=
"sql-merge"/>.
1166 <glossentry id=
"glossary-mvcc">
1167 <glossterm>Multi-version concurrency control (MVCC)
</glossterm>
1170 A mechanism designed to allow several
1171 <glossterm linkend=
"glossary-transaction">transactions
</glossterm> to be
1172 reading and writing the same rows without one process causing other
1174 In
<productname>PostgreSQL
</productname>, MVCC is implemented by
1175 creating copies (
<firstterm>versions
</firstterm>) of
1176 <glossterm linkend=
"glossary-tuple">tuples
</glossterm> as they are
1177 modified; after transactions that can see the old versions terminate,
1178 those old versions need to be removed.
1183 <glossentry id=
"glossary-null">
1184 <glossterm>Null
</glossterm>
1187 A concept of non-existence that is a central tenet of relational
1188 database theory. It represents the absence of a definite value.
1194 <glossterm>Optimizer
</glossterm>
1195 <glosssee otherterm=
"glossary-planner" />
1198 <glossentry id=
"glossary-parallel-query">
1199 <glossterm>Parallel query
</glossterm>
1202 The ability to handle parts of executing a
1203 <glossterm linkend=
"glossary-query">query
</glossterm> to take advantage
1204 of parallel processes on servers with multiple
<acronym>CPU
</acronym>s.
1209 <glossentry id=
"glossary-partition">
1210 <glossterm>Partition
</glossterm>
1213 One of several disjoint (not overlapping) subsets of a larger set.
1219 <glossterm linkend=
"glossary-partitioned-table">partitioned table
</glossterm>:
1220 One of the tables that each contain part of the data of the partitioned table,
1221 which is said to be the
<firstterm>parent
</firstterm>.
1222 The partition is itself a table, so it can also be queried directly;
1223 at the same time, a partition can sometimes be a partitioned table,
1224 allowing hierarchies to be created.
1229 In reference to a
<glossterm linkend=
"glossary-window-function">window function
</glossterm>
1230 in a
<glossterm linkend=
"glossary-query">query
</glossterm>,
1231 a partition is a user-defined criterion that identifies which neighboring
1232 <glossterm linkend=
"glossary-tuple">rows
</glossterm>
1233 of the
<glossterm linkend=
"glossary-result-set">query's result set
</glossterm>
1234 can be considered by the function.
1239 <glossentry id=
"glossary-partitioned-table">
1240 <glossterm>Partitioned table (relation)
</glossterm>
1243 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> that is
1244 in semantic terms the same as a
<glossterm linkend=
"glossary-table">table
</glossterm>,
1245 but whose storage is distributed across several
1246 <glossterm linkend=
"glossary-partition">partitions
</glossterm>.
1251 <glossentry id=
"glossary-postmaster">
1252 <glossterm>Postmaster (process)
</glossterm>
1255 The very first process of an
<glossterm linkend=
"glossary-instance">instance
</glossterm>.
1256 It starts and manages the
1257 <glossterm linkend=
"glossary-auxiliary-proc">auxiliary processes
</glossterm>
1258 and creates
<glossterm linkend=
"glossary-backend">backend processes
</glossterm>
1262 For more information, see
1263 <xref linkend=
"server-start"/>.
1268 <glossentry id=
"glossary-primary-key">
1269 <glossterm>Primary key
</glossterm>
1273 <glossterm linkend=
"glossary-unique-constraint">unique constraint
</glossterm>
1275 <glossterm linkend=
"glossary-table">table
</glossterm> or other
1276 <glossterm linkend=
"glossary-relation">relation
</glossterm> that also
1277 guarantees that all of the
1278 <glossterm linkend=
"glossary-attribute">attributes
</glossterm>
1279 within the
<glossterm linkend=
"glossary-primary-key">primary key
</glossterm>
1280 do not have
<glossterm linkend=
"glossary-null">null
</glossterm> values.
1281 As the name implies, there can be only one
1282 primary key per table, though it is possible to have multiple unique
1283 constraints that also have no null-capable attributes.
1288 <glossentry id=
"glossary-primary-server">
1289 <glossterm>Primary (server)
</glossterm>
1292 When two or more
<glossterm linkend=
"glossary-database">databases
</glossterm>
1293 are linked via
<glossterm linkend=
"glossary-replication">replication
</glossterm>,
1294 the
<glossterm linkend=
"glossary-server">server
</glossterm>
1295 that is considered the authoritative source of information is called
1296 the
<firstterm>primary
</firstterm>,
1297 also known as a
<firstterm>master
</firstterm>.
1302 <glossentry id=
"glossary-procedure">
1303 <glossterm>Procedure (routine)
</glossterm>
1307 Their distinctive qualities are that they do not return values,
1308 and that they are allowed to make transactional statements such
1309 as
<command>COMMIT
</command> and
<command>ROLLBACK
</command>.
1310 They are invoked via the
<command>CALL
</command> command.
1313 For more information, see
1314 <xref linkend=
"sql-createprocedure"/>.
1319 <glossentry id=
"glossary-query">
1320 <glossterm>Query
</glossterm>
1323 A request sent by a client to a
<glossterm linkend=
"glossary-backend">backend
</glossterm>,
1324 usually to return results or to modify data on the database.
1329 <glossentry id=
"glossary-planner">
1330 <glossterm>Query planner
</glossterm>
1333 The part of
<productname>PostgreSQL
</productname> that is devoted to
1334 determining (
<firstterm>planning
</firstterm>) the most efficient way to
1335 execute
<glossterm linkend=
"glossary-query">queries
</glossterm>.
1336 Also known as
<firstterm>query optimizer
</firstterm>,
1337 <firstterm>optimizer
</firstterm>, or simply
<firstterm>planner
</firstterm>.
1343 <glossterm>Record
</glossterm>
1344 <glosssee otherterm=
"glossary-tuple" />
1348 <glossterm>Recycling
</glossterm>
1349 <glosssee otherterm=
"glossary-wal-file" />
1352 <glossentry id=
"glossary-referential-integrity">
1353 <glossterm>Referential integrity
</glossterm>
1356 A means of restricting data in one
<glossterm linkend=
"glossary-relation">relation
</glossterm>
1357 by a
<glossterm linkend=
"glossary-foreign-key">foreign key
</glossterm>
1358 so that it must have matching data in another
1359 <glossterm linkend=
"glossary-relation">relation
</glossterm>.
1364 <glossentry id=
"glossary-relation">
1365 <glossterm>Relation
</glossterm>
1368 The generic term for all objects in a
1369 <glossterm linkend=
"glossary-database">database
</glossterm>
1370 that have a name and a list of
1371 <glossterm linkend=
"glossary-attribute">attributes
</glossterm>
1372 defined in a specific order.
1373 <glossterm linkend=
"glossary-table">Tables
</glossterm>,
1374 <glossterm linkend=
"glossary-sequence">sequences
</glossterm>,
1375 <glossterm linkend=
"glossary-view">views
</glossterm>,
1376 <glossterm linkend=
"glossary-foreign-table">foreign tables
</glossterm>,
1377 <glossterm linkend=
"glossary-materialized-view">materialized views
</glossterm>,
1378 composite types, and
1379 <glossterm linkend=
"glossary-index">indexes
</glossterm> are all relations.
1382 More generically, a relation is a set of tuples; for example,
1383 the result of a query is also a relation.
1386 In
<productname>PostgreSQL
</productname>,
1387 <firstterm>Class
</firstterm> is an archaic synonym for
1388 <firstterm>relation
</firstterm>.
1393 <glossentry id=
"glossary-replica">
1394 <glossterm>Replica (server)
</glossterm>
1397 A
<glossterm linkend=
"glossary-database">database
</glossterm> that is paired
1398 with a
<glossterm linkend=
"glossary-primary-server">primary
</glossterm>
1399 database and is maintaining a copy of some or all of the primary database's
1400 data. The foremost reasons for doing this are to allow for greater access
1401 to that data, and to maintain availability of the data in the event that
1402 the
<glossterm linkend=
"glossary-primary-server">primary
</glossterm>
1403 becomes unavailable.
1408 <glossentry id=
"glossary-replication">
1409 <glossterm>Replication
</glossterm>
1412 The act of reproducing data on one
1413 <glossterm linkend=
"glossary-server">server
</glossterm> onto another
1414 server called a
<glossterm linkend=
"glossary-replica">replica
</glossterm>.
1415 This can take the form of
<firstterm>physical replication
</firstterm>,
1416 where all file changes from one server are copied verbatim,
1417 or
<firstterm>logical replication
</firstterm> where a defined subset
1418 of data changes are conveyed using a higher-level representation.
1423 <glossentry id=
"glossary-restartpoint">
1424 <glossterm>Restartpoint
</glossterm>
1427 A variant of a
<glossterm
1428 linkend=
"glossary-checkpoint">checkpoint
</glossterm> performed on a
1429 <glossterm linkend=
"glossary-replica">replica
</glossterm>.
1432 For more information, see
<xref linkend=
"wal-configuration"/>.
1437 <glossentry id=
"glossary-result-set">
1438 <glossterm>Result set
</glossterm>
1441 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> transmitted
1442 from a
<glossterm linkend=
"glossary-backend">backend process
</glossterm>
1443 to a
<glossterm linkend=
"glossary-client">client
</glossterm> upon the
1444 completion of an
<acronym>SQL
</acronym> command, usually a
1445 <command>SELECT
</command> but it can be an
1446 <command>INSERT
</command>,
<command>UPDATE
</command>,
1447 <command>DELETE
</command>, or
<command>MERGE
</command> command if the
1448 <literal>RETURNING
</literal> clause is specified.
1451 The fact that a result set is a relation means that a query can be used
1452 in the definition of another query, becoming a
1453 <firstterm>subquery
</firstterm>.
1462 <glossentry id=
"glossary-revoke">
1463 <glossterm>Revoke
</glossterm>
1466 A command to prevent access to a named set of
1467 <glossterm linkend=
"glossary-database">database
</glossterm> objects for a
1468 named list of
<glossterm linkend=
"glossary-role">roles
</glossterm>.
1471 For more information, see
1472 <xref linkend=
"sql-revoke"/>.
1477 <glossentry id=
"glossary-role">
1478 <glossterm>Role
</glossterm>
1481 A collection of access privileges to the
1482 <glossterm linkend=
"glossary-database">instance
</glossterm>.
1483 Roles are themselves a privilege that can be granted to other roles.
1484 This is often done for convenience or to ensure completeness
1485 when multiple
<glossterm linkend=
"glossary-user">users
</glossterm> need
1486 the same privileges.
1489 For more information, see
1490 <xref linkend=
"sql-createrole"/>.
1495 <glossentry id=
"glossary-rollback">
1496 <glossterm>Rollback
</glossterm>
1499 A command to undo all of the operations performed since the beginning
1500 of a
<glossterm linkend=
"glossary-transaction">transaction
</glossterm>.
1503 For more information, see
1504 <xref linkend=
"sql-rollback"/>.
1509 <glossentry id=
"glossary-routine">
1510 <glossterm>Routine
</glossterm>
1513 A defined set of instructions stored in the database system
1514 that can be invoked for execution.
1515 A routine can be written in a variety of programming
1516 languages. Routines can be
1517 <glossterm linkend=
"glossary-function">functions
</glossterm>
1518 (including set-returning functions and
1519 <glossterm linkend=
"glossary-trigger">trigger functions
</glossterm>),
1520 <glossterm linkend=
"glossary-aggregate">aggregate functions
</glossterm>,
1521 and
<glossterm linkend=
"glossary-procedure">procedures
</glossterm>.
1524 Many routines are already defined within
<productname>PostgreSQL
</productname>
1525 itself, but user-defined ones can also be added.
1531 <glossterm>Row
</glossterm>
1532 <glosssee otherterm=
"glossary-tuple" />
1535 <glossentry id=
"glossary-savepoint">
1536 <glossterm>Savepoint
</glossterm>
1539 A special mark in the sequence of steps in a
1540 <glossterm linkend=
"glossary-transaction">transaction
</glossterm>.
1541 Data modifications after this point in time may be reverted
1542 to the time of the savepoint.
1545 For more information, see
1546 <xref linkend=
"sql-savepoint"/>.
1551 <glossentry id=
"glossary-schema">
1552 <glossterm>Schema
</glossterm>
1555 A schema is a namespace for
1556 <glossterm linkend=
"glossary-sql-object">SQL objects
</glossterm>,
1557 which all reside in the same
1558 <glossterm linkend=
"glossary-database">database
</glossterm>.
1559 Each SQL object must reside in exactly one schema.
1562 All system-defined SQL objects reside in schema
<literal>pg_catalog
</literal>.
1567 More generically, the term
<firstterm>schema
</firstterm> is used to mean
1568 all data descriptions (
<glossterm linkend=
"glossary-table">table
</glossterm> definitions,
1569 <glossterm linkend=
"glossary-constraint">constraints
</glossterm>, comments, etc.)
1570 for a given
<glossterm linkend=
"glossary-database">database
</glossterm> or
1574 For more information, see
1575 <xref linkend=
"ddl-schemas"/>.
1581 <glossterm>Segment
</glossterm>
1582 <glosssee otherterm=
"glossary-file-segment" />
1585 <glossentry id=
"glossary-select">
1586 <glossterm>Select
</glossterm>
1589 The
<acronym>SQL
</acronym> command used to request data from a
1590 <glossterm linkend=
"glossary-database">database
</glossterm>.
1591 Normally,
<command>SELECT
</command> commands are not expected to modify the
1592 <glossterm linkend=
"glossary-database">database
</glossterm> in any way,
1593 but it is possible that
1594 <glossterm linkend=
"glossary-function">functions
</glossterm> invoked within
1595 the query could have side effects that do modify data.
1598 For more information, see
1599 <xref linkend=
"sql-select"/>.
1604 <glossentry id=
"glossary-sequence">
1605 <glossterm>Sequence (relation)
</glossterm>
1608 A type of relation that is used to generate values.
1609 Typically the generated values are sequential non-repeating numbers.
1610 They are commonly used to generate surrogate
1611 <glossterm linkend=
"glossary-primary-key">primary key
</glossterm>
1617 <!-- XXX should define all other isolation levels (and improve this definition)
1618 <glossentry id="glossary-serializable">
1619 <glossterm>Serializable (isolation level)</glossterm>
1622 Transactions defined as <literal>SERIALIZABLE</literal> are unable to
1623 see changes made within other transactions. In effect, for the
1624 initializing session the entire <glossterm linkend="glossary-database">database</glossterm>
1625 appears to be frozen for the duration of the
1626 <glossterm linkend="glossary-transaction">Transaction</glossterm>.
1632 <glossentry id=
"glossary-server">
1633 <glossterm>Server
</glossterm>
1636 A computer on which
<productname>PostgreSQL
</productname>
1637 <glossterm linkend=
"glossary-instance">instances
</glossterm> run.
1638 The term
<firstterm>server
</firstterm> denotes real hardware, a
1639 container, or a
<firstterm>virtual machine
</firstterm>.
1642 This term is sometimes used to refer to an instance or to a host.
1647 <glossentry id=
"glossary-session">
1648 <glossterm>Session
</glossterm>
1651 A state that allows a client and a backend to interact,
1652 communicating over a
<glossterm linkend=
"glossary-connection">connection
</glossterm>.
1657 <glossentry id=
"glossary-shared-memory">
1658 <glossterm>Shared memory
</glossterm>
1661 <acronym>RAM
</acronym> which is used by the processes common to an
1662 <glossterm linkend=
"glossary-instance">instance
</glossterm>.
1663 It mirrors parts of
<glossterm linkend=
"glossary-database">database
</glossterm>
1664 files, provides a transient area for
1665 <glossterm linkend=
"glossary-wal-record">WAL records
</glossterm>,
1666 and stores additional common information.
1667 Note that shared memory belongs to the complete instance, not to a single
1671 The largest part of shared memory is known as
<firstterm>shared buffers
</firstterm>
1672 and is used to mirror part of data files, organized into pages.
1673 When a page is modified, it is called a dirty page until it is
1674 written back to the file system.
1677 For more information, see
1678 <xref linkend=
"runtime-config-resource-memory"/>.
1683 <glossentry id=
"glossary-sql-object">
1684 <glossterm>SQL object
</glossterm>
1687 Any object that can be created with a
<command>CREATE
</command>
1688 command. Most objects are specific to one database, and are commonly
1689 known as
<firstterm>local objects
</firstterm>.
1692 Most local objects reside in a specific
1693 <glossterm linkend=
"glossary-schema">schema
</glossterm> in their
1694 containing database, such as
1695 <glossterm linkend=
"glossary-relation">relations
</glossterm> (all types),
1696 <glossterm linkend=
"glossary-function">routines
</glossterm> (all types),
1698 The names of such objects of the same type in the same schema
1699 are enforced to be unique.
1702 There also exist local objects that do not reside in schemas; some examples are
1703 <glossterm linkend=
"glossary-extension">extensions
</glossterm>,
1704 <glossterm linkend=
"glossary-cast">data type casts
</glossterm>, and
1705 <glossterm linkend=
"glossary-foreign-data-wrapper">foreign data wrappers
</glossterm>.
1706 The names of such objects of the same type are enforced to be unique
1707 within the database.
1710 Other object types, such as
1711 <glossterm linkend=
"glossary-role">roles
</glossterm>,
1712 <glossterm linkend=
"glossary-tablespace">tablespaces
</glossterm>,
1713 replication origins, subscriptions for logical replication, and
1714 databases themselves are not local SQL objects since they exist
1715 entirely outside of any specific database;
1716 they are called
<firstterm>global objects
</firstterm>.
1717 The names of such objects are enforced to be unique within the whole
1721 For more information, see
1722 <xref linkend=
"manage-ag-overview"/>.
1727 <glossentry id=
"glossary-sql-standard">
1728 <glossterm>SQL standard
</glossterm>
1731 A series of documents that define the
<acronym>SQL
</acronym> language.
1737 <glossterm>Standby (server)
</glossterm>
1738 <glosssee otherterm=
"glossary-replica" />
1741 <glossentry id=
"glossary-startup-process">
1742 <glossterm>Startup process
</glossterm>
1745 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
1746 that replays WAL during crash recovery and in a
1747 <glossterm linkend=
"glossary-replication">physical replica
</glossterm>.
1750 (The name is historical: the startup process was named before
1751 replication was implemented; the name refers to its task as it
1752 relates to the server startup following a crash.)
1757 <glossentry id=
"glossary-superuser">
1758 <glossterm>Superuser
</glossterm>
1761 As used in this documentation, it is a synonym for
1762 <glossterm linkend=
"glossary-database-superuser">database superuser
</glossterm>.
1767 <glossentry id=
"glossary-system-catalog">
1768 <glossterm>System catalog
</glossterm>
1771 A collection of
<glossterm linkend=
"glossary-table">tables
</glossterm>
1772 which describe the structure of all
1773 <glossterm linkend=
"glossary-sql-object">SQL objects
</glossterm>
1775 The system catalog resides in the schema
<literal>pg_catalog
</literal>.
1776 These tables contain data in internal representation and are
1777 not typically considered useful for user examination;
1778 a number of user-friendlier
<glossterm linkend=
"glossary-view">views
</glossterm>,
1779 also in schema
<literal>pg_catalog
</literal>, offer more convenient access to
1780 some of that information, while additional tables and views
1781 exist in schema
<literal>information_schema
</literal>
1782 (see
<xref linkend=
"information-schema" />) that expose some
1783 of the same and additional information as mandated by the
1784 <glossterm linkend=
"glossary-sql-standard">SQL standard
</glossterm>.
1787 For more information, see
1788 <xref linkend=
"ddl-schemas"/>.
1793 <glossentry id=
"glossary-table">
1794 <glossterm>Table
</glossterm>
1797 A collection of
<glossterm linkend=
"glossary-tuple">tuples
</glossterm> having
1798 a common data structure (the same number of
1799 <glossterm linkend=
"glossary-attribute">attributes
</glossterm>, in the same
1800 order, having the same name and type per position).
1801 A table is the most common form of
1802 <glossterm linkend=
"glossary-relation">relation
</glossterm> in
1803 <productname>PostgreSQL
</productname>.
1806 For more information, see
1807 <xref linkend=
"sql-createtable"/>.
1812 <glossentry id=
"glossary-tablespace">
1813 <glossterm>Tablespace
</glossterm>
1816 A named location on the server file system.
1817 All
<glossterm linkend=
"glossary-sql-object">SQL objects
</glossterm>
1818 which require storage beyond their definition in the
1819 <glossterm linkend=
"glossary-system-catalog">system catalog
</glossterm>
1820 must belong to a single tablespace.
1821 Initially, a database cluster contains a single usable tablespace which is
1822 used as the default for all SQL objects, called
<literal>pg_default
</literal>.
1825 For more information, see
1826 <xref linkend=
"manage-ag-tablespaces"/>.
1831 <glossentry id=
"glossary-temporary-table">
1832 <glossterm>Temporary table
</glossterm>
1835 <glossterm linkend=
"glossary-table">Tables
</glossterm> that exist either
1836 for the lifetime of a
1837 <glossterm linkend=
"glossary-session">session
</glossterm> or a
1838 <glossterm linkend=
"glossary-transaction">transaction
</glossterm>, as
1839 specified at the time of creation.
1840 The data in them is not visible to other sessions, and is not
1841 <glossterm linkend=
"glossary-logged">logged
</glossterm>.
1842 Temporary tables are often used to store intermediate data for a
1843 multi-step operation.
1846 For more information, see
1847 <xref linkend=
"sql-createtable"/>.
1852 <glossentry id=
"glossary-toast">
1853 <glossterm>TOAST
</glossterm>
1856 A mechanism by which large attributes of table rows are split and
1857 stored in a secondary table, called the
<firstterm>TOAST table
</firstterm>.
1858 Each relation with large attributes has its own TOAST table.
1861 For more information, see
1862 <xref linkend=
"storage-toast" />.
1867 <glossentry id=
"glossary-transaction">
1868 <glossterm>Transaction
</glossterm>
1871 A combination of commands that must act as a single
1872 <glossterm linkend=
"glossary-atomic">atomic
</glossterm> command: they all
1873 succeed or all fail as a single unit, and their effects are not visible to
1874 other
<glossterm linkend=
"glossary-session">sessions
</glossterm> until
1875 the transaction is complete, and possibly even later, depending on the
1879 For more information, see
1880 <xref linkend=
"transaction-iso"/>.
1885 <glossentry id=
"glossary-xid">
1886 <glossterm>Transaction ID
</glossterm>
1889 The numerical, unique, sequentially-assigned identifier that each
1890 transaction receives when it first causes a database modification.
1891 Frequently abbreviated as
<firstterm>xid
</firstterm>.
1892 When stored on disk, xids are only
32-bits wide, so only
1893 approximately four billion write transaction IDs can be generated;
1894 to permit the system to run for longer than that,
1895 <firstterm>epochs
</firstterm> are used, also
32 bits wide.
1896 When the counter reaches the maximum xid value, it starts over at
1897 <literal>3</literal> (values under that are reserved) and the
1898 epoch value is incremented by one.
1899 In some contexts, the epoch and xid values are
1900 considered together as a single
64-bit value; see
<xref
1901 linkend=
"transaction-id"/> for more details.
1904 For more information, see
1905 <xref linkend=
"datatype-oid"/>.
1910 <glossentry id=
"glossary-tps">
1911 <glossterm>Transactions per second (TPS)
</glossterm>
1914 Average number of transactions that are executed per second,
1915 totaled across all sessions active for a measured run.
1916 This is used as a measure of the performance characteristics of
1922 <glossentry id=
"glossary-trigger">
1923 <glossterm>Trigger
</glossterm>
1926 A
<glossterm linkend=
"glossary-function">function
</glossterm> which can
1927 be defined to execute whenever a certain operation (
<command>INSERT
</command>,
1928 <command>UPDATE
</command>,
<command>DELETE
</command>,
1929 <command>TRUNCATE
</command>) is applied to a
1930 <glossterm linkend=
"glossary-relation">relation
</glossterm>.
1931 A trigger executes within the same
1932 <glossterm linkend=
"glossary-transaction">transaction
</glossterm> as the
1933 statement which invoked it, and if the function fails, then the invoking
1934 statement also fails.
1937 For more information, see
1938 <xref linkend=
"sql-createtrigger"/>.
1943 <glossentry id=
"glossary-tuple">
1944 <glossterm>Tuple
</glossterm>
1947 A collection of
<glossterm linkend=
"glossary-attribute">attributes
</glossterm>
1949 That order may be defined by the
<glossterm linkend=
"glossary-table">table
</glossterm>
1950 (or other
<glossterm linkend=
"glossary-relation">relation
</glossterm>)
1951 where the tuple is contained, in which case the tuple is often called a
1952 <firstterm>row
</firstterm>. It may also be defined by the structure of a
1953 result set, in which case it is sometimes called a
<firstterm>record
</firstterm>.
1958 <glossentry id=
"glossary-unique-constraint">
1959 <glossterm>Unique constraint
</glossterm>
1962 A type of
<glossterm linkend=
"glossary-constraint">constraint
</glossterm>
1963 defined on a
<glossterm linkend=
"glossary-relation">relation
</glossterm>
1964 which restricts the values allowed in one or a combination of columns
1965 so that each value or combination of values can only appear once in the
1966 relation
— that is, no other row in the relation contains values
1967 that are equal to those.
1970 Because
<glossterm linkend=
"glossary-null">null values
</glossterm> are
1971 not considered equal to each other, multiple rows with null values are
1972 allowed to exist without violating the unique constraint.
1977 <glossentry id=
"glossary-unlogged">
1978 <glossterm>Unlogged
</glossterm>
1981 The property of certain
<glossterm linkend=
"glossary-relation">relations
</glossterm>
1982 that the changes to them are not reflected in the
1983 <glossterm linkend=
"glossary-wal">WAL
</glossterm>.
1984 This disables replication and crash recovery for these relations.
1987 The primary use of unlogged tables is for storing
1988 transient work data that must be shared across processes.
1991 <glossterm linkend=
"glossary-temporary-table">Temporary tables
</glossterm>
1992 are always unlogged.
1997 <glossentry id=
"glossary-update">
1998 <glossterm>Update
</glossterm>
2001 An
<acronym>SQL
</acronym> command used to modify
2002 <glossterm linkend=
"glossary-tuple">rows
</glossterm>
2003 that may already exist in a specified
<glossterm linkend=
"glossary-table">table
</glossterm>.
2004 It cannot create or remove rows.
2007 For more information, see
2008 <xref linkend=
"sql-update"/>.
2013 <glossentry id=
"glossary-user">
2014 <glossterm>User
</glossterm>
2017 A
<glossterm linkend=
"glossary-role">role
</glossterm> that has the
2018 <firstterm>login privilege
</firstterm>
2019 (see
<xref linkend=
"role-attributes"/>).
2024 <glossentry id=
"glossary-user-mapping">
2025 <glossterm>User mapping
</glossterm>
2028 The translation of login credentials in the local
2029 <glossterm linkend=
"glossary-database">database
</glossterm> to credentials
2030 in a remote data system defined by a
2031 <glossterm linkend=
"glossary-foreign-data-wrapper">foreign data wrapper
</glossterm>.
2034 For more information, see
2035 <xref linkend=
"sql-createusermapping"/>.
2040 <glossentry id=
"glossary-vacuum">
2041 <glossterm>Vacuum
</glossterm>
2044 The process of removing outdated
2045 <glossterm linkend=
"glossary-tuple">tuple versions
</glossterm>
2046 from tables or materialized views, and other closely related
2047 processing required by
<productname>PostgreSQL
</productname>'s
2048 implementation of
<glossterm linkend=
"glossary-mvcc">MVCC
</glossterm>.
2049 This can be initiated through the use of
2050 the
<command>VACUUM
</command> command, but can also be handled automatically
2051 via
<glossterm linkend=
"glossary-autovacuum">autovacuum
</glossterm> processes.
2054 For more information, see
2055 <xref linkend=
"routine-vacuuming"/> .
2060 <glossentry id=
"glossary-view">
2061 <glossterm>View
</glossterm>
2064 A
<glossterm linkend=
"glossary-relation">relation
</glossterm> that is defined by a
2065 <command>SELECT
</command> statement, but has no storage of its own.
2066 Any time a query references a view, the definition of the view is
2067 substituted into the query as if the user had typed it as a subquery
2068 instead of the name of the view.
2071 For more information, see
2072 <xref linkend=
"sql-createview"/>.
2077 <glossentry id=
"glossary-vm">
2078 <glossterm>Visibility map (fork)
</glossterm>
2081 A storage structure that keeps metadata about each data page
2082 of a table's main fork. The visibility map entry for
2083 each page stores two bits: the first one
2084 (
<literal>all-visible
</literal>) indicates that all tuples
2085 in the page are visible to all transactions. The second one
2086 (
<literal>all-frozen
</literal>) indicates that all tuples
2087 in the page are marked frozen.
2093 <glossterm>WAL
</glossterm>
2094 <glosssee otherterm=
"glossary-wal" />
2097 <glossentry id=
"glossary-wal-archiver">
2098 <glossterm>WAL archiver (process)
</glossterm>
2101 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
2102 which, if enabled, saves copies of
2103 <glossterm linkend=
"glossary-wal-file">WAL files
</glossterm>
2104 for the purpose of creating backups or keeping
2105 <glossterm linkend=
"glossary-replica">replicas
</glossterm> current.
2108 For more information, see
2109 <xref linkend=
"continuous-archiving"/>.
2114 <glossentry id=
"glossary-wal-file">
2115 <glossterm>WAL file
</glossterm>
2118 Also known as
<firstterm>WAL segment
</firstterm> or
2119 <firstterm>WAL segment file
</firstterm>.
2120 Each of the sequentially-numbered files that provide storage space for
2121 <glossterm linkend=
"glossary-wal">WAL
</glossterm>.
2122 The files are all of the same predefined size
2123 and are written in sequential order, interspersing changes
2124 as they occur in multiple simultaneous sessions.
2125 If the system crashes, the files are read in order, and each of the
2126 changes is replayed to restore the system to the state it was in
2130 Each WAL file can be released after a
2131 <glossterm linkend=
"glossary-checkpoint">checkpoint
</glossterm>
2132 writes all the changes in it to the corresponding data files.
2133 Releasing the file can be done either by deleting it, or by changing its
2134 name so that it will be used in the future, which is called
2135 <firstterm>recycling
</firstterm>.
2138 For more information, see
2139 <xref linkend=
"wal-internals"/>.
2144 <glossentry id=
"glossary-wal-record">
2145 <glossterm>WAL record
</glossterm>
2148 A low-level description of an individual data change.
2149 It contains sufficient information for the data change to be
2150 re-executed (
<firstterm>replayed
</firstterm>) in case a system failure
2151 causes the change to be lost.
2152 WAL records use a non-printable binary format.
2155 For more information, see
2156 <xref linkend=
"wal-internals"/>.
2161 <glossentry id=
"glossary-wal-receiver">
2162 <glossterm>WAL receiver (process)
</glossterm>
2165 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
2166 that runs on a
<glossterm linkend=
"glossary-replica">replica
</glossterm>
2167 to receive WAL from the
2168 <glossterm linkend=
"glossary-primary-server">primary server
</glossterm>
2170 <glossterm linkend=
"glossary-startup-process">startup process
</glossterm>.
2174 For more information, see
2175 <xref linkend=
"warm-standby"/>.
2181 <glossterm>WAL segment
</glossterm>
2182 <glosssee otherterm=
"glossary-wal-file" />
2185 <glossentry id=
"glossary-wal-sender">
2186 <glossterm>WAL sender (process)
</glossterm>
2189 A special
<glossterm linkend=
"glossary-backend">backend process
</glossterm>
2190 that streams WAL over a network. The receiving end can be a
2191 <glossterm linkend=
"glossary-wal-receiver">WAL receiver
</glossterm>
2192 in a
<glossterm linkend=
"glossary-replica">replica
</glossterm>,
2193 <xref linkend=
"app-pgreceivewal"/>, or any other client program
2194 that speaks the replication protocol.
2199 <glossentry id=
"glossary-wal-summarizer">
2200 <glossterm>WAL summarizer (process)
</glossterm>
2203 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
2204 that summarizes WAL data for
2205 <glossterm linkend=
"glossary-incremental-backup">incremental backups
</glossterm>.
2208 For more information, see
<xref linkend=
"runtime-config-wal-summarization"/>.
2213 <glossentry id=
"glossary-wal-writer">
2214 <glossterm>WAL writer (process)
</glossterm>
2217 An
<glossterm linkend=
"glossary-auxiliary-proc">auxiliary process
</glossterm>
2218 that writes
<glossterm linkend=
"glossary-wal-record">WAL records
</glossterm>
2219 from
<glossterm linkend=
"glossary-shared-memory">shared memory
</glossterm> to
2220 <glossterm linkend=
"glossary-wal-file">WAL files
</glossterm>.
2223 For more information, see
2224 <xref linkend=
"runtime-config-wal"/>.
2229 <glossentry id=
"glossary-window-function">
2230 <glossterm>Window function (routine)
</glossterm>
2233 A type of
<glossterm linkend=
"glossary-function">function
</glossterm>
2234 used in a
<glossterm linkend=
"glossary-query">query
</glossterm>
2235 that applies to a
<glossterm linkend=
"glossary-partition">partition
</glossterm>
2236 of the query's
<glossterm linkend=
"glossary-result-set">result set
</glossterm>;
2237 the function's result is based on values found in
2238 <glossterm linkend=
"glossary-tuple">rows
</glossterm> of the same partition or frame.
2241 All
<glossterm linkend=
"glossary-aggregate">aggregate functions
</glossterm>
2242 can be used as window functions, but window functions can also be
2243 used to, for example, give ranks to each of the rows in the partition.
2244 Also known as
<firstterm>analytic functions
</firstterm>.
2247 For more information, see
2248 <xref linkend=
"tutorial-window"/>.
2253 <glossentry id=
"glossary-wal">
2254 <glossterm>Write-ahead log
</glossterm>
2257 The journal that keeps track of the changes in the
2258 <glossterm linkend=
"glossary-db-cluster">database cluster
</glossterm>
2259 as user- and system-invoked operations take place.
2260 It comprises many individual
2261 <glossterm linkend=
"glossary-wal-record">WAL records
</glossterm> written
2262 sequentially to
<glossterm linkend=
"glossary-wal-file">WAL files
</glossterm>.