Repair memory leaks in plpython.
[pgsql.git] / doc / src / sgml / glossary.sgml
blobf54f25c1c6be4604a669c4c7b250bf31b30cc247
1 <appendix id="glossary">
2 <title>Glossary</title>
3 <para>
4 This is a list of terms and their meaning in the context of
5 <productname>PostgreSQL</productname> and relational database
6 systems in general.
7 </para>
9 <glosslist>
10 <glossentry id="glossary-acid">
11 <glossterm>ACID</glossterm>
12 <glossdef>
13 <para>
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.
21 </para>
22 </glossdef>
23 </glossentry>
25 <glossentry id="glossary-aggregate">
26 <glossterm>Aggregate function (routine)</glossterm>
27 <glossdef>
28 <para>
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.
33 </para>
34 <para>
35 For more information, see
36 <xref linkend="functions-aggregate"/>.
37 </para>
38 <glossseealso otherterm="glossary-window-function" />
39 </glossdef>
40 </glossentry>
42 <glossentry id="glossary-am">
43 <glossterm>Access Method</glossterm>
44 <glossdef>
45 <para>
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.
49 </para>
50 <para>
51 For more information, see <xref linkend="tableam" /> and
52 <xref linkend="indexam" />.
53 </para>
54 </glossdef>
55 </glossentry>
57 <glossentry>
58 <glossterm>Analytic function</glossterm>
59 <glosssee otherterm="glossary-window-function" />
60 </glossentry>
62 <glossentry id="glossary-analyze">
63 <glossterm>Analyze (operation)</glossterm>
64 <glossdef>
65 <para>
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>.
72 </para>
73 <para>
74 (Don't confuse this term with the <literal>ANALYZE</literal> option
75 to the <xref linkend="sql-explain"/> command.)
76 </para>
77 <para>
78 For more information, see
79 <xref linkend="sql-analyze"/>.
80 </para>
81 </glossdef>
82 </glossentry>
84 <glossentry id="glossary-atomic">
85 <glossterm>Atomic</glossterm>
86 <glossdef>
87 <para>
88 In reference to a <glossterm linkend="glossary-datum">datum</glossterm>:
89 the fact that its value cannot be broken down into smaller
90 components.
91 </para>
92 </glossdef>
93 <glossdef>
94 <para>
95 In reference to a
96 <glossterm linkend="glossary-transaction">database transaction</glossterm>:
97 see <glossterm linkend="glossary-atomicity">atomicity</glossterm>.
98 </para>
99 </glossdef>
100 </glossentry>
102 <glossentry id="glossary-atomicity">
103 <glossterm>Atomicity</glossterm>
104 <glossdef>
105 <para>
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.
111 </para>
112 </glossdef>
113 </glossentry>
115 <glossentry id="glossary-attribute">
116 <glossterm>Attribute</glossterm>
117 <glossdef>
118 <para>
119 An element with a certain name and data type found within a
120 <glossterm linkend="glossary-tuple">tuple</glossterm>.
121 </para>
122 </glossdef>
123 </glossentry>
125 <glossentry id="glossary-autovacuum">
126 <glossterm>Autovacuum (process)</glossterm>
127 <glossdef>
128 <para>
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>.
137 </para>
138 <para>
139 For more information, see
140 <xref linkend="autovacuum"/>.
141 </para>
142 </glossdef>
143 </glossentry>
145 <glossentry id="glossary-auxiliary-proc">
146 <glossterm>Auxiliary process</glossterm>
147 <glossdef>
148 <para>
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
156 the first place.
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>.
169 </para>
170 </glossdef>
171 </glossentry>
173 <glossentry id="glossary-backend">
174 <glossterm>Backend (process)</glossterm>
175 <glossdef>
176 <para>
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.
180 </para>
181 <para>
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>).
185 </para>
186 </glossdef>
187 </glossentry>
189 <glossentry id="glossary-background-worker">
190 <glossterm>Background worker (process)</glossterm>
191 <glossdef>
192 <para>
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.
201 </para>
202 <para>
203 For more information, see
204 <xref linkend="bgworker"/>.
205 </para>
206 </glossdef>
207 </glossentry>
209 <glossentry id="glossary-background-writer">
210 <glossterm>Background writer (process)</glossterm>
211 <glossdef>
212 <para>
213 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
214 that writes dirty
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.
221 </para>
222 <para>
223 For more information, see
224 <xref linkend="runtime-config-resource-background-writer"/>.
225 </para>
226 </glossdef>
227 </glossentry>
229 <glossentry id="glossary-basebackup">
230 <glossterm>Base Backup</glossterm>
231 <glossdef>
232 <para>
233 A binary copy of all
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.
238 </para>
239 </glossdef>
240 </glossentry>
242 <glossentry id="glossary-bloat">
243 <glossterm>Bloat</glossterm>
244 <glossdef>
245 <para>
246 Space in data pages which does not contain current row versions,
247 such as unused (free) space or outdated row versions.
248 </para>
249 </glossdef>
250 </glossentry>
252 <glossentry id="glossary-bootstrap-superuser">
253 <glossterm>Bootstrap superuser</glossterm>
254 <glossdef>
255 <para>
256 The first <glossterm linkend="glossary-user">user</glossterm> initialized in a
257 <glossterm linkend="glossary-db-cluster">database cluster</glossterm>.
258 </para>
259 <para>
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.
263 </para>
264 <para>
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.
268 </para>
269 </glossdef>
270 </glossentry>
272 <glossentry id="glossary-buffer-access-strategy">
273 <glossterm>Buffer Access Strategy</glossterm>
274 <glossdef>
275 <para>
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>.
281 </para>
282 <para>
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.
289 </para>
290 <para>
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>.
296 </para>
297 </glossdef>
298 </glossentry>
300 <glossentry id="glossary-cast">
301 <glossterm>Cast</glossterm>
302 <glossdef>
303 <para>
304 A conversion of a <glossterm linkend="glossary-datum">datum</glossterm>
305 from its current data type to another data type.
306 </para>
307 <para>
308 For more information, see
309 <xref linkend="sql-createcast"/>.
310 </para>
311 </glossdef>
312 </glossentry>
314 <glossentry id="glossary-catalog">
315 <glossterm>Catalog</glossterm>
316 <glossdef>
317 <para>
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.
322 </para>
323 <para>
324 (Don't confuse this term with
325 <glossterm linkend="glossary-system-catalog">system catalog</glossterm>).
326 </para>
327 <para>
328 For more information, see
329 <xref linkend="manage-ag-overview"/>.
330 </para>
331 </glossdef>
332 </glossentry>
334 <glossentry id="glossary-check-constraint">
335 <glossterm>Check constraint</glossterm>
336 <glossdef>
337 <para>
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
344 other relations.
345 </para>
346 <para>
347 For more information, see
348 <xref linkend="ddl-constraints"/>.
349 </para>
350 </glossdef>
351 </glossentry>
353 <glossentry id="glossary-checkpoint">
354 <glossterm>Checkpoint</glossterm>
355 <glossdef>
356 <para>
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
363 to mark that point.
364 </para>
365 <para>
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>.
372 </para>
373 <para>
374 For more information, see
375 <xref linkend="wal-configuration"/>.
376 </para>
377 </glossdef>
378 </glossentry>
380 <glossentry id="glossary-checkpointer">
381 <glossterm>Checkpointer (process)</glossterm>
382 <glossdef>
383 <para>
384 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
385 that is responsible for executing
386 <glossterm linkend="glossary-checkpoint">checkpoints</glossterm>.
387 </para>
388 </glossdef>
389 </glossentry>
391 <glossentry>
392 <glossterm>Class (archaic)</glossterm>
393 <glosssee otherterm="glossary-relation" />
394 </glossentry>
396 <glossentry id="glossary-client">
397 <glossterm>Client (process)</glossterm>
398 <glossdef>
399 <para>
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>.
405 </para>
406 </glossdef>
407 </glossentry>
409 <glossentry id="glossary-cluster-owner">
410 <glossterm>Cluster owner</glossterm>
411 <glossdef>
412 <para>
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>.
418 </para>
419 <para>
420 On operating systems with a <literal>root</literal> user,
421 said user is not allowed to be the cluster owner.
422 </para>
423 </glossdef>
424 </glossentry>
426 <glossentry id="glossary-column">
427 <glossterm>Column</glossterm>
428 <glossdef>
429 <para>
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>.
433 </para>
434 </glossdef>
435 </glossentry>
437 <glossentry id="glossary-commit">
438 <glossterm>Commit</glossterm>
439 <glossdef>
440 <para>
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>.
446 </para>
447 <para>
448 For more information, see
449 <xref linkend="sql-commit"/>.
450 </para>
451 </glossdef>
452 </glossentry>
454 <glossentry id="glossary-concurrency">
455 <glossterm>Concurrency</glossterm>
456 <glossdef>
457 <para>
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>
462 mechanism.
463 </para>
464 </glossdef>
465 </glossentry>
467 <glossentry id="glossary-connection">
468 <glossterm>Connection</glossterm>
469 <glossdef>
470 <para>
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.
476 </para>
477 <para>
478 For more information, see
479 <xref linkend="runtime-config-connection"/>.
480 </para>
481 </glossdef>
482 </glossentry>
484 <glossentry id="glossary-consistency">
485 <glossterm>Consistency</glossterm>
486 <glossdef>
487 <para>
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.
497 </para>
498 </glossdef>
499 </glossentry>
501 <glossentry id="glossary-constraint">
502 <glossterm>Constraint</glossterm>
503 <glossdef>
504 <para>
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>.
509 </para>
510 <para>
511 For more information, see
512 <xref linkend="ddl-constraints"/>.
513 </para>
514 </glossdef>
515 </glossentry>
517 <glossentry id="glossary-cumulative-statistics">
518 <glossterm>Cumulative Statistics System</glossterm>
519 <glossdef>
520 <para>
521 A system which, if enabled, accumulates statistical information
522 about the <glossterm linkend="glossary-instance">instance</glossterm>'s
523 activities.
524 </para>
525 <para>
526 For more information, see
527 <xref linkend="monitoring-stats"/>.
528 </para>
529 </glossdef>
530 </glossentry>
532 <glossentry>
533 <glossterm>Data area</glossterm>
534 <glosssee otherterm="glossary-data-directory" />
535 </glossentry>
537 <glossentry id="glossary-database">
538 <glossterm>Database</glossterm>
539 <glossdef>
540 <para>
541 A named collection of
542 <glossterm linkend="glossary-sql-object">local SQL objects</glossterm>.
543 </para>
544 <para>
545 For more information, see
546 <xref linkend="manage-ag-overview"/>.
547 </para>
548 </glossdef>
549 </glossentry>
551 <glossentry id="glossary-db-cluster">
552 <glossterm>Database cluster</glossterm>
553 <glossdef>
554 <para>
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.
561 </para>
562 <para>
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>.)
566 </para>
567 <para>
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.
572 </para>
573 </glossdef>
574 </glossentry>
576 <glossentry>
577 <glossterm>Database server</glossterm>
578 <glosssee otherterm="glossary-instance" />
579 </glossentry>
581 <glossentry id="glossary-database-superuser">
582 <glossterm>Database superuser</glossterm>
583 <glossdef>
584 <para>
585 A role having <firstterm>superuser status</firstterm>
586 (see <xref linkend="role-attributes"/>).
587 </para>
588 <para>
589 Frequently referred to as <firstterm>superuser</firstterm>.
590 </para>
591 </glossdef>
592 </glossentry>
594 <glossentry id="glossary-data-directory">
595 <glossterm>Data directory</glossterm>
596 <glossdef>
597 <para>
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.
607 </para>
608 <para>
609 A <glossterm linkend="glossary-db-cluster">cluster</glossterm>'s storage
610 space comprises the data directory plus any additional tablespaces.
611 </para>
612 <para>
613 For more information, see
614 <xref linkend="storage-file-layout"/>.
615 </para>
616 </glossdef>
617 </glossentry>
619 <glossentry id="glossary-data-page">
620 <glossterm>Data page</glossterm>
621 <glossdef>
622 <para>
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
630 dirty until written.
631 </para>
632 </glossdef>
633 </glossentry>
635 <glossentry id="glossary-datum">
636 <glossterm>Datum</glossterm>
637 <glossdef>
638 <para>
639 The internal representation of one value of an <acronym>SQL</acronym>
640 data type.
641 </para>
642 </glossdef>
643 </glossentry>
645 <glossentry id="glossary-delete">
646 <glossterm>Delete</glossterm>
647 <glossdef>
648 <para>
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>.
653 </para>
654 <para>
655 For more information, see
656 <xref linkend="sql-delete"/>.
657 </para>
658 </glossdef>
659 </glossentry>
661 <glossentry id="glossary-domain">
662 <glossterm>Domain</glossterm>
663 <glossdef>
664 <para>
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.
668 </para>
669 <para>
670 For more information, see <xref linkend="domains"/>.
671 </para>
672 </glossdef>
673 </glossentry>
675 <glossentry id="glossary-durability">
676 <glossterm>Durability</glossterm>
677 <glossdef>
678 <para>
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.
684 </para>
685 </glossdef>
686 </glossentry>
688 <glossentry>
689 <glossterm>Epoch</glossterm>
690 <glosssee otherterm="glossary-xid" />
691 </glossentry>
693 <glossentry id="glossary-extension">
694 <glossterm>Extension</glossterm>
695 <glossdef>
696 <para>
697 A software add-on package that can be installed on an
698 <glossterm linkend="glossary-instance">instance</glossterm> to
699 get extra features.
700 </para>
701 <para>
702 For more information, see
703 <xref linkend="extend-extensions" />.
704 </para>
705 </glossdef>
706 </glossentry>
708 <glossentry id="glossary-file-segment">
709 <glossterm>File segment</glossterm>
710 <glossdef>
711 <para>
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.
717 </para>
718 <para>
719 For more information, see
720 <xref linkend="storage-file-layout"/>.
721 </para>
722 <para>
723 (Don't confuse this term with the similar term
724 <glossterm linkend="glossary-wal-file">WAL segment</glossterm>).
725 </para>
726 </glossdef>
727 </glossentry>
729 <glossentry id="glossary-foreign-data-wrapper">
730 <glossterm>Foreign data wrapper</glossterm>
731 <glossdef>
732 <para>
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>.
738 </para>
739 <para>
740 For more information, see
741 <xref linkend="sql-createforeigndatawrapper"/>.
742 </para>
743 </glossdef>
744 </glossentry>
746 <glossentry id="glossary-foreign-key">
747 <glossterm>Foreign key</glossterm>
748 <glossdef>
749 <para>
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>.
757 </para>
758 </glossdef>
759 </glossentry>
761 <glossentry id="glossary-foreign-server">
762 <glossterm>Foreign server</glossterm>
763 <glossdef>
764 <para>
765 A named collection of
766 <glossterm linkend="glossary-foreign-table">foreign tables</glossterm> which
767 all use the same
768 <glossterm linkend="glossary-foreign-data-wrapper">foreign data wrapper</glossterm>
769 and have other configuration values in common.
770 </para>
771 <para>
772 For more information, see
773 <xref linkend="sql-createserver"/>.
774 </para>
775 </glossdef>
776 </glossentry>
778 <glossentry id="glossary-foreign-table">
779 <glossterm>Foreign table (relation)</glossterm>
780 <glossdef>
781 <para>
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>.
791 </para>
792 <para>
793 For more information, see
794 <xref linkend="sql-createforeigntable"/>.
795 </para>
796 </glossdef>
797 </glossentry>
799 <glossentry id="glossary-fork">
800 <glossterm>Fork</glossterm>
801 <glossdef>
802 <para>
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>.
810 </para>
811 </glossdef>
812 </glossentry>
814 <glossentry id="glossary-fsm">
815 <glossterm>Free space map (fork)</glossterm>
816 <glossdef>
817 <para>
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
822 size.
823 </para>
824 <para>
825 For more information, see
826 <xref linkend="storage-fsm"/>.
827 </para>
828 </glossdef>
829 </glossentry>
831 <glossentry id="glossary-function">
832 <glossterm>Function (routine)</glossterm>
833 <glossdef>
834 <para>
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>.
842 </para>
843 <para>
844 Functions can also be used for
845 <glossterm linkend="glossary-trigger">triggers</glossterm> to invoke.
846 </para>
847 <para>
848 For more information, see
849 <xref linkend="sql-createfunction"/>.
850 </para>
851 </glossdef>
852 </glossentry>
854 <glossentry id="glossary-grant">
855 <glossterm>Grant</glossterm>
856 <glossdef>
857 <para>
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>.
862 </para>
863 <para>
864 For more information, see
865 <xref linkend="sql-grant"/>.
866 </para>
867 </glossdef>
868 </glossentry>
870 <glossentry id="glossary-heap">
871 <glossterm>Heap</glossterm>
872 <glossdef>
873 <para>
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>.
880 </para>
881 </glossdef>
882 </glossentry>
884 <glossentry id="glossary-host">
885 <glossterm>Host</glossterm>
886 <glossdef>
887 <para>
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.
893 </para>
894 </glossdef>
895 </glossentry>
897 <glossentry id="glossary-index">
898 <glossterm>Index (relation)</glossterm>
899 <glossdef>
900 <para>
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
905 data.
906 </para>
907 <para>
908 For more information, see
909 <xref linkend="sql-createindex"/>.
910 </para>
911 </glossdef>
912 </glossentry>
913 <glossentry id="glossary-incremental-backup">
914 <glossterm>Incremental backup</glossterm>
915 <glossdef>
916 <para>
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"/>.
921 </para>
922 <para>
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
928 a consistent state.
929 </para>
930 <para>
931 For more information, see <xref linkend="backup-incremental-backup"/>.
932 </para>
933 </glossdef>
934 </glossentry>
936 <glossentry id="glossary-insert">
937 <glossterm>Insert</glossterm>
938 <glossdef>
939 <para>
940 An <acronym>SQL</acronym> command used to add new data into a
941 <glossterm linkend="glossary-table">table</glossterm>.
942 </para>
943 <para>
944 For more information, see
945 <xref linkend="sql-insert"/>.
946 </para>
947 </glossdef>
948 </glossentry>
950 <glossentry id="glossary-instance">
951 <glossterm>Instance</glossterm>
952 <glossdef>
953 <para>
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.
963 </para>
964 <para>
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.
971 </para>
972 </glossdef>
973 </glossentry>
975 <glossentry id="glossary-isolation">
976 <glossterm>Isolation</glossterm>
977 <glossdef>
978 <para>
979 The property that the effects of a transaction are not visible to
980 <glossterm linkend="glossary-concurrency">concurrent transactions</glossterm>
981 before it commits.
982 This is one of the <acronym>ACID</acronym> properties.
983 </para>
984 <para>
985 For more information, see <xref linkend="transaction-iso" />.
986 </para>
987 </glossdef>
988 </glossentry>
990 <glossentry id="glossary-join">
991 <glossterm>Join</glossterm>
992 <glossdef>
993 <para>
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>.
998 </para>
999 </glossdef>
1000 </glossentry>
1002 <glossentry id="glossary-key">
1003 <glossterm>Key</glossterm>
1004 <glossdef>
1005 <para>
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>
1011 in that relation.
1012 </para>
1013 </glossdef>
1014 </glossentry>
1016 <glossentry id="glossary-lock">
1017 <glossterm>Lock</glossterm>
1018 <glossdef>
1019 <para>
1020 A mechanism that allows a process to limit or prevent simultaneous
1021 access to a resource.
1022 </para>
1023 </glossdef>
1024 </glossentry>
1026 <glossentry id="glossary-log-file">
1027 <glossterm>Log file</glossterm>
1028 <glossdef>
1029 <para>
1030 Log files contain human-readable text lines about events.
1031 Examples include login failures, long-running queries, etc.
1032 </para>
1033 <para>
1034 For more information, see
1035 <xref linkend="logfile-maintenance"/>.
1036 </para>
1037 </glossdef>
1038 </glossentry>
1040 <glossentry id="glossary-logged">
1041 <glossterm>Logged</glossterm>
1042 <glossdef>
1043 <para>
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.
1050 </para>
1051 </glossdef>
1052 </glossentry>
1054 <glossentry id="glossary-logger">
1055 <glossterm>Logger (process)</glossterm>
1056 <glossdef>
1057 <para>
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>.
1064 </para>
1065 <para>
1066 For more information, see
1067 <xref linkend="runtime-config-logging"/>.
1068 </para>
1069 </glossdef>
1070 </glossentry>
1072 <glossentry id="glossary-logical-replication-cluster">
1073 <glossterm>Logical replication cluster</glossterm>
1074 <glossdef>
1075 <para>
1076 A set of publisher and subscriber instances with the publisher instance
1077 replicating changes to the subscriber instance.
1078 </para>
1079 </glossdef>
1080 </glossentry>
1082 <glossentry id="glossary-log-record">
1083 <glossterm>Log record</glossterm>
1084 <glossdef>
1085 <para>
1086 Archaic term for a <glossterm linkend="glossary-wal-record">WAL record</glossterm>.
1087 </para>
1088 </glossdef>
1089 </glossentry>
1091 <glossentry id="glossary-log-sequence-number">
1092 <glossterm>Log sequence number</glossterm>
1093 <acronym>LSN</acronym>
1094 <glossdef>
1095 <para>
1096 Byte offset into the <glossterm linkend="glossary-wal">WAL</glossterm>,
1097 increasing monotonically with each new <glossterm
1098 linkend="glossary-wal-record">WAL record</glossterm>.
1099 </para>
1100 <para>
1101 For more information, see <link
1102 linkend="datatype-pg-lsn"><type>pg_lsn</type></link> and <xref
1103 linkend="wal-internals"/>.
1104 </para>
1105 </glossdef>
1106 </glossentry>
1108 <glossentry>
1109 <glossterm>LSN</glossterm>
1110 <glosssee otherterm="glossary-log-sequence-number"/>
1111 </glossentry>
1113 <glossentry>
1114 <glossterm>Master (server)</glossterm>
1115 <glosssee otherterm="glossary-primary-server" />
1116 </glossentry>
1118 <glossentry id="glossary-materialized">
1119 <glossterm>Materialized</glossterm>
1120 <glossdef>
1121 <para>
1122 The property that some information has been pre-computed and stored
1123 for later use, rather than computing it on-the-fly.
1124 </para>
1125 <para>
1126 This term is used in
1127 <glossterm linkend="glossary-materialized-view">materialized view</glossterm>,
1128 to mean that the data derived from the view's query is stored on
1129 disk separately from the sources of that data.
1130 </para>
1131 <para>
1132 This term is also used to refer to some multi-step queries to mean that
1133 the data resulting from executing a given step is stored in memory
1134 (with the possibility of spilling to disk), so that it can be read multiple
1135 times by another step.
1136 </para>
1137 </glossdef>
1138 </glossentry>
1140 <glossentry id="glossary-materialized-view">
1141 <glossterm>Materialized view (relation)</glossterm>
1142 <glossdef>
1143 <para>
1144 A <glossterm linkend="glossary-relation">relation</glossterm> that is
1145 defined by a <command>SELECT</command> statement
1146 (just like a <glossterm linkend="glossary-view">view</glossterm>),
1147 but stores data in the same way that a
1148 <glossterm linkend="glossary-table">table</glossterm> does. It cannot be
1149 modified via <command>INSERT</command>, <command>UPDATE</command>,
1150 <command>DELETE</command>, or <command>MERGE</command> operations.
1151 </para>
1152 <para>
1153 For more information, see
1154 <xref linkend="sql-creatematerializedview"/>.
1155 </para>
1156 </glossdef>
1157 </glossentry>
1159 <glossentry id="glossary-merge">
1160 <glossterm>Merge</glossterm>
1161 <glossdef>
1162 <para>
1163 An <acronym>SQL</acronym> command used to conditionally add, modify,
1164 or remove <glossterm linkend="glossary-tuple">rows</glossterm>
1165 in a given <glossterm linkend="glossary-table">table</glossterm>,
1166 using data from a source
1167 <glossterm linkend="glossary-relation">relation</glossterm>.
1168 </para>
1169 <para>
1170 For more information, see
1171 <xref linkend="sql-merge"/>.
1172 </para>
1173 </glossdef>
1174 </glossentry>
1176 <glossentry id="glossary-mvcc">
1177 <glossterm>Multi-version concurrency control (MVCC)</glossterm>
1178 <glossdef>
1179 <para>
1180 A mechanism designed to allow several
1181 <glossterm linkend="glossary-transaction">transactions</glossterm> to be
1182 reading and writing the same rows without one process causing other
1183 processes to stall.
1184 In <productname>PostgreSQL</productname>, MVCC is implemented by
1185 creating copies (<firstterm>versions</firstterm>) of
1186 <glossterm linkend="glossary-tuple">tuples</glossterm> as they are
1187 modified; after transactions that can see the old versions terminate,
1188 those old versions need to be removed.
1189 </para>
1190 </glossdef>
1191 </glossentry>
1193 <glossentry id="glossary-null">
1194 <glossterm>Null</glossterm>
1195 <glossdef>
1196 <para>
1197 A concept of non-existence that is a central tenet of relational
1198 database theory. It represents the absence of a definite value.
1199 </para>
1200 </glossdef>
1201 </glossentry>
1203 <glossentry>
1204 <glossterm>Optimizer</glossterm>
1205 <glosssee otherterm="glossary-planner" />
1206 </glossentry>
1208 <glossentry id="glossary-parallel-query">
1209 <glossterm>Parallel query</glossterm>
1210 <glossdef>
1211 <para>
1212 The ability to handle parts of executing a
1213 <glossterm linkend="glossary-query">query</glossterm> to take advantage
1214 of parallel processes on servers with multiple <acronym>CPU</acronym>s.
1215 </para>
1216 </glossdef>
1217 </glossentry>
1219 <glossentry id="glossary-partition">
1220 <glossterm>Partition</glossterm>
1221 <glossdef>
1222 <para>
1223 One of several disjoint (not overlapping) subsets of a larger set.
1224 </para>
1225 </glossdef>
1226 <glossdef>
1227 <para>
1228 In reference to a
1229 <glossterm linkend="glossary-partitioned-table">partitioned table</glossterm>:
1230 One of the tables that each contain part of the data of the partitioned table,
1231 which is said to be the <firstterm>parent</firstterm>.
1232 The partition is itself a table, so it can also be queried directly;
1233 at the same time, a partition can sometimes be a partitioned table,
1234 allowing hierarchies to be created.
1235 </para>
1236 </glossdef>
1237 <glossdef>
1238 <para>
1239 In reference to a <glossterm linkend="glossary-window-function">window function</glossterm>
1240 in a <glossterm linkend="glossary-query">query</glossterm>,
1241 a partition is a user-defined criterion that identifies which neighboring
1242 <glossterm linkend="glossary-tuple">rows</glossterm>
1243 of the <glossterm linkend="glossary-result-set">query's result set</glossterm>
1244 can be considered by the function.
1245 </para>
1246 </glossdef>
1247 </glossentry>
1249 <glossentry id="glossary-partitioned-table">
1250 <glossterm>Partitioned table (relation)</glossterm>
1251 <glossdef>
1252 <para>
1253 A <glossterm linkend="glossary-relation">relation</glossterm> that is
1254 in semantic terms the same as a <glossterm linkend="glossary-table">table</glossterm>,
1255 but whose storage is distributed across several
1256 <glossterm linkend="glossary-partition">partitions</glossterm>.
1257 </para>
1258 </glossdef>
1259 </glossentry>
1261 <glossentry id="glossary-postmaster">
1262 <glossterm>Postmaster (process)</glossterm>
1263 <glossdef>
1264 <para>
1265 The very first process of an <glossterm linkend="glossary-instance">instance</glossterm>.
1266 It starts and manages the
1267 <glossterm linkend="glossary-auxiliary-proc">auxiliary processes</glossterm>
1268 and creates <glossterm linkend="glossary-backend">backend processes</glossterm>
1269 on demand.
1270 </para>
1271 <para>
1272 For more information, see
1273 <xref linkend="server-start"/>.
1274 </para>
1275 </glossdef>
1276 </glossentry>
1278 <glossentry id="glossary-primary-key">
1279 <glossterm>Primary key</glossterm>
1280 <glossdef>
1281 <para>
1282 A special case of a
1283 <glossterm linkend="glossary-unique-constraint">unique constraint</glossterm>
1284 defined on a
1285 <glossterm linkend="glossary-table">table</glossterm> or other
1286 <glossterm linkend="glossary-relation">relation</glossterm> that also
1287 guarantees that all of the
1288 <glossterm linkend="glossary-attribute">attributes</glossterm>
1289 within the <glossterm linkend="glossary-primary-key">primary key</glossterm>
1290 do not have <glossterm linkend="glossary-null">null</glossterm> values.
1291 As the name implies, there can be only one
1292 primary key per table, though it is possible to have multiple unique
1293 constraints that also have no null-capable attributes.
1294 </para>
1295 </glossdef>
1296 </glossentry>
1298 <glossentry id="glossary-primary-server">
1299 <glossterm>Primary (server)</glossterm>
1300 <glossdef>
1301 <para>
1302 When two or more <glossterm linkend="glossary-database">databases</glossterm>
1303 are linked via <glossterm linkend="glossary-replication">replication</glossterm>,
1304 the <glossterm linkend="glossary-server">server</glossterm>
1305 that is considered the authoritative source of information is called
1306 the <firstterm>primary</firstterm>,
1307 also known as a <firstterm>master</firstterm>.
1308 </para>
1309 </glossdef>
1310 </glossentry>
1312 <glossentry id="glossary-procedure">
1313 <glossterm>Procedure (routine)</glossterm>
1314 <glossdef>
1315 <para>
1316 A type of routine.
1317 Their distinctive qualities are that they do not return values,
1318 and that they are allowed to make transactional statements such
1319 as <command>COMMIT</command> and <command>ROLLBACK</command>.
1320 They are invoked via the <command>CALL</command> command.
1321 </para>
1322 <para>
1323 For more information, see
1324 <xref linkend="sql-createprocedure"/>.
1325 </para>
1326 </glossdef>
1327 </glossentry>
1329 <glossentry id="glossary-query">
1330 <glossterm>Query</glossterm>
1331 <glossdef>
1332 <para>
1333 A request sent by a client to a <glossterm linkend="glossary-backend">backend</glossterm>,
1334 usually to return results or to modify data on the database.
1335 </para>
1336 </glossdef>
1337 </glossentry>
1339 <glossentry id="glossary-planner">
1340 <glossterm>Query planner</glossterm>
1341 <glossdef>
1342 <para>
1343 The part of <productname>PostgreSQL</productname> that is devoted to
1344 determining (<firstterm>planning</firstterm>) the most efficient way to
1345 execute <glossterm linkend="glossary-query">queries</glossterm>.
1346 Also known as <firstterm>query optimizer</firstterm>,
1347 <firstterm>optimizer</firstterm>, or simply <firstterm>planner</firstterm>.
1348 </para>
1349 </glossdef>
1350 </glossentry>
1352 <glossentry>
1353 <glossterm>Record</glossterm>
1354 <glosssee otherterm="glossary-tuple" />
1355 </glossentry>
1357 <glossentry>
1358 <glossterm>Recycling</glossterm>
1359 <glosssee otherterm="glossary-wal-file" />
1360 </glossentry>
1362 <glossentry id="glossary-referential-integrity">
1363 <glossterm>Referential integrity</glossterm>
1364 <glossdef>
1365 <para>
1366 A means of restricting data in one <glossterm linkend="glossary-relation">relation</glossterm>
1367 by a <glossterm linkend="glossary-foreign-key">foreign key</glossterm>
1368 so that it must have matching data in another
1369 <glossterm linkend="glossary-relation">relation</glossterm>.
1370 </para>
1371 </glossdef>
1372 </glossentry>
1374 <glossentry id="glossary-relation">
1375 <glossterm>Relation</glossterm>
1376 <glossdef>
1377 <para>
1378 The generic term for all objects in a
1379 <glossterm linkend="glossary-database">database</glossterm>
1380 that have a name and a list of
1381 <glossterm linkend="glossary-attribute">attributes</glossterm>
1382 defined in a specific order.
1383 <glossterm linkend="glossary-table">Tables</glossterm>,
1384 <glossterm linkend="glossary-sequence">sequences</glossterm>,
1385 <glossterm linkend="glossary-view">views</glossterm>,
1386 <glossterm linkend="glossary-foreign-table">foreign tables</glossterm>,
1387 <glossterm linkend="glossary-materialized-view">materialized views</glossterm>,
1388 composite types, and
1389 <glossterm linkend="glossary-index">indexes</glossterm> are all relations.
1390 </para>
1391 <para>
1392 More generically, a relation is a set of tuples; for example,
1393 the result of a query is also a relation.
1394 </para>
1395 <para>
1396 In <productname>PostgreSQL</productname>,
1397 <firstterm>Class</firstterm> is an archaic synonym for
1398 <firstterm>relation</firstterm>.
1399 </para>
1400 </glossdef>
1401 </glossentry>
1403 <glossentry id="glossary-replica">
1404 <glossterm>Replica (server)</glossterm>
1405 <glossdef>
1406 <para>
1407 A <glossterm linkend="glossary-database">database</glossterm> that is paired
1408 with a <glossterm linkend="glossary-primary-server">primary</glossterm>
1409 database and is maintaining a copy of some or all of the primary database's
1410 data. The foremost reasons for doing this are to allow for greater access
1411 to that data, and to maintain availability of the data in the event that
1412 the <glossterm linkend="glossary-primary-server">primary</glossterm>
1413 becomes unavailable.
1414 </para>
1415 </glossdef>
1416 </glossentry>
1418 <glossentry id="glossary-replication">
1419 <glossterm>Replication</glossterm>
1420 <glossdef>
1421 <para>
1422 The act of reproducing data on one
1423 <glossterm linkend="glossary-server">server</glossterm> onto another
1424 server called a <glossterm linkend="glossary-replica">replica</glossterm>.
1425 This can take the form of <firstterm>physical replication</firstterm>,
1426 where all file changes from one server are copied verbatim,
1427 or <firstterm>logical replication</firstterm> where a defined subset
1428 of data changes are conveyed using a higher-level representation.
1429 </para>
1430 </glossdef>
1431 </glossentry>
1433 <glossentry id="glossary-restartpoint">
1434 <glossterm>Restartpoint</glossterm>
1435 <glossdef>
1436 <para>
1437 A variant of a <glossterm
1438 linkend="glossary-checkpoint">checkpoint</glossterm> performed on a
1439 <glossterm linkend="glossary-replica">replica</glossterm>.
1440 </para>
1441 <para>
1442 For more information, see <xref linkend="wal-configuration"/>.
1443 </para>
1444 </glossdef>
1445 </glossentry>
1447 <glossentry id="glossary-result-set">
1448 <glossterm>Result set</glossterm>
1449 <glossdef>
1450 <para>
1451 A <glossterm linkend="glossary-relation">relation</glossterm> transmitted
1452 from a <glossterm linkend="glossary-backend">backend process</glossterm>
1453 to a <glossterm linkend="glossary-client">client</glossterm> upon the
1454 completion of an <acronym>SQL</acronym> command, usually a
1455 <command>SELECT</command> but it can be an
1456 <command>INSERT</command>, <command>UPDATE</command>,
1457 <command>DELETE</command>, or <command>MERGE</command> command if the
1458 <literal>RETURNING</literal> clause is specified.
1459 </para>
1460 <para>
1461 The fact that a result set is a relation means that a query can be used
1462 in the definition of another query, becoming a
1463 <firstterm>subquery</firstterm>.
1464 </para>
1465 </glossdef>
1466 <glossdef>
1467 <para>
1468 </para>
1469 </glossdef>
1470 </glossentry>
1472 <glossentry id="glossary-revoke">
1473 <glossterm>Revoke</glossterm>
1474 <glossdef>
1475 <para>
1476 A command to prevent access to a named set of
1477 <glossterm linkend="glossary-database">database</glossterm> objects for a
1478 named list of <glossterm linkend="glossary-role">roles</glossterm>.
1479 </para>
1480 <para>
1481 For more information, see
1482 <xref linkend="sql-revoke"/>.
1483 </para>
1484 </glossdef>
1485 </glossentry>
1487 <glossentry id="glossary-role">
1488 <glossterm>Role</glossterm>
1489 <glossdef>
1490 <para>
1491 A collection of access privileges to the
1492 <glossterm linkend="glossary-database">instance</glossterm>.
1493 Roles are themselves a privilege that can be granted to other roles.
1494 This is often done for convenience or to ensure completeness
1495 when multiple <glossterm linkend="glossary-user">users</glossterm> need
1496 the same privileges.
1497 </para>
1498 <para>
1499 For more information, see
1500 <xref linkend="sql-createrole"/>.
1501 </para>
1502 </glossdef>
1503 </glossentry>
1505 <glossentry id="glossary-rollback">
1506 <glossterm>Rollback</glossterm>
1507 <glossdef>
1508 <para>
1509 A command to undo all of the operations performed since the beginning
1510 of a <glossterm linkend="glossary-transaction">transaction</glossterm>.
1511 </para>
1512 <para>
1513 For more information, see
1514 <xref linkend="sql-rollback"/>.
1515 </para>
1516 </glossdef>
1517 </glossentry>
1519 <glossentry id="glossary-routine">
1520 <glossterm>Routine</glossterm>
1521 <glossdef>
1522 <para>
1523 A defined set of instructions stored in the database system
1524 that can be invoked for execution.
1525 A routine can be written in a variety of programming
1526 languages. Routines can be
1527 <glossterm linkend="glossary-function">functions</glossterm>
1528 (including set-returning functions and
1529 <glossterm linkend="glossary-trigger">trigger functions</glossterm>),
1530 <glossterm linkend="glossary-aggregate">aggregate functions</glossterm>,
1531 and <glossterm linkend="glossary-procedure">procedures</glossterm>.
1532 </para>
1533 <para>
1534 Many routines are already defined within <productname>PostgreSQL</productname>
1535 itself, but user-defined ones can also be added.
1536 </para>
1537 </glossdef>
1538 </glossentry>
1540 <glossentry>
1541 <glossterm>Row</glossterm>
1542 <glosssee otherterm="glossary-tuple" />
1543 </glossentry>
1545 <glossentry id="glossary-savepoint">
1546 <glossterm>Savepoint</glossterm>
1547 <glossdef>
1548 <para>
1549 A special mark in the sequence of steps in a
1550 <glossterm linkend="glossary-transaction">transaction</glossterm>.
1551 Data modifications after this point in time may be reverted
1552 to the time of the savepoint.
1553 </para>
1554 <para>
1555 For more information, see
1556 <xref linkend="sql-savepoint"/>.
1557 </para>
1558 </glossdef>
1559 </glossentry>
1561 <glossentry id="glossary-schema">
1562 <glossterm>Schema</glossterm>
1563 <glossdef>
1564 <para>
1565 A schema is a namespace for
1566 <glossterm linkend="glossary-sql-object">SQL objects</glossterm>,
1567 which all reside in the same
1568 <glossterm linkend="glossary-database">database</glossterm>.
1569 Each SQL object must reside in exactly one schema.
1570 </para>
1571 <para>
1572 All system-defined SQL objects reside in schema <literal>pg_catalog</literal>.
1573 </para>
1574 </glossdef>
1575 <glossdef>
1576 <para>
1577 More generically, the term <firstterm>schema</firstterm> is used to mean
1578 all data descriptions (<glossterm linkend="glossary-table">table</glossterm> definitions,
1579 <glossterm linkend="glossary-constraint">constraints</glossterm>, comments, etc.)
1580 for a given <glossterm linkend="glossary-database">database</glossterm> or
1581 subset thereof.
1582 </para>
1583 <para>
1584 For more information, see
1585 <xref linkend="ddl-schemas"/>.
1586 </para>
1587 </glossdef>
1588 </glossentry>
1590 <glossentry>
1591 <glossterm>Segment</glossterm>
1592 <glosssee otherterm="glossary-file-segment" />
1593 </glossentry>
1595 <glossentry id="glossary-select">
1596 <glossterm>Select</glossterm>
1597 <glossdef>
1598 <para>
1599 The <acronym>SQL</acronym> command used to request data from a
1600 <glossterm linkend="glossary-database">database</glossterm>.
1601 Normally, <command>SELECT</command> commands are not expected to modify the
1602 <glossterm linkend="glossary-database">database</glossterm> in any way,
1603 but it is possible that
1604 <glossterm linkend="glossary-function">functions</glossterm> invoked within
1605 the query could have side effects that do modify data.
1606 </para>
1607 <para>
1608 For more information, see
1609 <xref linkend="sql-select"/>.
1610 </para>
1611 </glossdef>
1612 </glossentry>
1614 <glossentry id="glossary-sequence">
1615 <glossterm>Sequence (relation)</glossterm>
1616 <glossdef>
1617 <para>
1618 A type of relation that is used to generate values.
1619 Typically the generated values are sequential non-repeating numbers.
1620 They are commonly used to generate surrogate
1621 <glossterm linkend="glossary-primary-key">primary key</glossterm>
1622 values.
1623 </para>
1624 </glossdef>
1625 </glossentry>
1627 <!-- XXX should define all other isolation levels (and improve this definition)
1628 <glossentry id="glossary-serializable">
1629 <glossterm>Serializable (isolation level)</glossterm>
1630 <glossdef>
1631 <para>
1632 Transactions defined as <literal>SERIALIZABLE</literal> are unable to
1633 see changes made within other transactions. In effect, for the
1634 initializing session the entire <glossterm linkend="glossary-database">database</glossterm>
1635 appears to be frozen for the duration of the
1636 <glossterm linkend="glossary-transaction">Transaction</glossterm>.
1637 </para>
1638 </glossdef>
1639 </glossentry>
1642 <glossentry id="glossary-server">
1643 <glossterm>Server</glossterm>
1644 <glossdef>
1645 <para>
1646 A computer on which <productname>PostgreSQL</productname>
1647 <glossterm linkend="glossary-instance">instances</glossterm> run.
1648 The term <firstterm>server</firstterm> denotes real hardware, a
1649 container, or a <firstterm>virtual machine</firstterm>.
1650 </para>
1651 <para>
1652 This term is sometimes used to refer to an instance or to a host.
1653 </para>
1654 </glossdef>
1655 </glossentry>
1657 <glossentry id="glossary-session">
1658 <glossterm>Session</glossterm>
1659 <glossdef>
1660 <para>
1661 A state that allows a client and a backend to interact,
1662 communicating over a <glossterm linkend="glossary-connection">connection</glossterm>.
1663 </para>
1664 </glossdef>
1665 </glossentry>
1667 <glossentry id="glossary-shared-memory">
1668 <glossterm>Shared memory</glossterm>
1669 <glossdef>
1670 <para>
1671 <acronym>RAM</acronym> which is used by the processes common to an
1672 <glossterm linkend="glossary-instance">instance</glossterm>.
1673 It mirrors parts of <glossterm linkend="glossary-database">database</glossterm>
1674 files, provides a transient area for
1675 <glossterm linkend="glossary-wal-record">WAL records</glossterm>,
1676 and stores additional common information.
1677 Note that shared memory belongs to the complete instance, not to a single
1678 database.
1679 </para>
1680 <para>
1681 The largest part of shared memory is known as <firstterm>shared buffers</firstterm>
1682 and is used to mirror part of data files, organized into pages.
1683 When a page is modified, it is called a dirty page until it is
1684 written back to the file system.
1685 </para>
1686 <para>
1687 For more information, see
1688 <xref linkend="runtime-config-resource-memory"/>.
1689 </para>
1690 </glossdef>
1691 </glossentry>
1693 <glossentry id="glossary-sql-object">
1694 <glossterm>SQL object</glossterm>
1695 <glossdef>
1696 <para>
1697 Any object that can be created with a <command>CREATE</command>
1698 command. Most objects are specific to one database, and are commonly
1699 known as <firstterm>local objects</firstterm>.
1700 </para>
1701 <para>
1702 Most local objects reside in a specific
1703 <glossterm linkend="glossary-schema">schema</glossterm> in their
1704 containing database, such as
1705 <glossterm linkend="glossary-relation">relations</glossterm> (all types),
1706 <glossterm linkend="glossary-function">routines</glossterm> (all types),
1707 data types, etc.
1708 The names of such objects of the same type in the same schema
1709 are enforced to be unique.
1710 </para>
1711 <para>
1712 There also exist local objects that do not reside in schemas; some examples are
1713 <glossterm linkend="glossary-extension">extensions</glossterm>,
1714 <glossterm linkend="glossary-cast">data type casts</glossterm>, and
1715 <glossterm linkend="glossary-foreign-data-wrapper">foreign data wrappers</glossterm>.
1716 The names of such objects of the same type are enforced to be unique
1717 within the database.
1718 </para>
1719 <para>
1720 Other object types, such as
1721 <glossterm linkend="glossary-role">roles</glossterm>,
1722 <glossterm linkend="glossary-tablespace">tablespaces</glossterm>,
1723 replication origins, subscriptions for logical replication, and
1724 databases themselves are not local SQL objects since they exist
1725 entirely outside of any specific database;
1726 they are called <firstterm>global objects</firstterm>.
1727 The names of such objects are enforced to be unique within the whole
1728 database cluster.
1729 </para>
1730 <para>
1731 For more information, see
1732 <xref linkend="manage-ag-overview"/>.
1733 </para>
1734 </glossdef>
1735 </glossentry>
1737 <glossentry id="glossary-sql-standard">
1738 <glossterm>SQL standard</glossterm>
1739 <glossdef>
1740 <para>
1741 A series of documents that define the <acronym>SQL</acronym> language.
1742 </para>
1743 </glossdef>
1744 </glossentry>
1746 <glossentry>
1747 <glossterm>Standby (server)</glossterm>
1748 <glosssee otherterm="glossary-replica" />
1749 </glossentry>
1751 <glossentry id="glossary-startup-process">
1752 <glossterm>Startup process</glossterm>
1753 <glossdef>
1754 <para>
1755 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
1756 that replays WAL during crash recovery and in a
1757 <glossterm linkend="glossary-replication">physical replica</glossterm>.
1758 </para>
1759 <para>
1760 (The name is historical: the startup process was named before
1761 replication was implemented; the name refers to its task as it
1762 relates to the server startup following a crash.)
1763 </para>
1764 </glossdef>
1765 </glossentry>
1767 <glossentry id="glossary-superuser">
1768 <glossterm>Superuser</glossterm>
1769 <glossdef>
1770 <para>
1771 As used in this documentation, it is a synonym for
1772 <glossterm linkend="glossary-database-superuser">database superuser</glossterm>.
1773 </para>
1774 </glossdef>
1775 </glossentry>
1777 <glossentry id="glossary-system-catalog">
1778 <glossterm>System catalog</glossterm>
1779 <glossdef>
1780 <para>
1781 A collection of <glossterm linkend="glossary-table">tables</glossterm>
1782 which describe the structure of all
1783 <glossterm linkend="glossary-sql-object">SQL objects</glossterm>
1784 of the instance.
1785 The system catalog resides in the schema <literal>pg_catalog</literal>.
1786 These tables contain data in internal representation and are
1787 not typically considered useful for user examination;
1788 a number of user-friendlier <glossterm linkend="glossary-view">views</glossterm>,
1789 also in schema <literal>pg_catalog</literal>, offer more convenient access to
1790 some of that information, while additional tables and views
1791 exist in schema <literal>information_schema</literal>
1792 (see <xref linkend="information-schema" />) that expose some
1793 of the same and additional information as mandated by the
1794 <glossterm linkend="glossary-sql-standard">SQL standard</glossterm>.
1795 </para>
1796 <para>
1797 For more information, see
1798 <xref linkend="ddl-schemas"/>.
1799 </para>
1800 </glossdef>
1801 </glossentry>
1803 <glossentry id="glossary-table">
1804 <glossterm>Table</glossterm>
1805 <glossdef>
1806 <para>
1807 A collection of <glossterm linkend="glossary-tuple">tuples</glossterm> having
1808 a common data structure (the same number of
1809 <glossterm linkend="glossary-attribute">attributes</glossterm>, in the same
1810 order, having the same name and type per position).
1811 A table is the most common form of
1812 <glossterm linkend="glossary-relation">relation</glossterm> in
1813 <productname>PostgreSQL</productname>.
1814 </para>
1815 <para>
1816 For more information, see
1817 <xref linkend="sql-createtable"/>.
1818 </para>
1819 </glossdef>
1820 </glossentry>
1822 <glossentry id="glossary-tablespace">
1823 <glossterm>Tablespace</glossterm>
1824 <glossdef>
1825 <para>
1826 A named location on the server file system.
1827 All <glossterm linkend="glossary-sql-object">SQL objects</glossterm>
1828 which require storage beyond their definition in the
1829 <glossterm linkend="glossary-system-catalog">system catalog</glossterm>
1830 must belong to a single tablespace.
1831 Initially, a database cluster contains a single usable tablespace which is
1832 used as the default for all SQL objects, called <literal>pg_default</literal>.
1833 </para>
1834 <para>
1835 For more information, see
1836 <xref linkend="manage-ag-tablespaces"/>.
1837 </para>
1838 </glossdef>
1839 </glossentry>
1841 <glossentry id="glossary-temporary-table">
1842 <glossterm>Temporary table</glossterm>
1843 <glossdef>
1844 <para>
1845 <glossterm linkend="glossary-table">Tables</glossterm> that exist either
1846 for the lifetime of a
1847 <glossterm linkend="glossary-session">session</glossterm> or a
1848 <glossterm linkend="glossary-transaction">transaction</glossterm>, as
1849 specified at the time of creation.
1850 The data in them is not visible to other sessions, and is not
1851 <glossterm linkend="glossary-logged">logged</glossterm>.
1852 Temporary tables are often used to store intermediate data for a
1853 multi-step operation.
1854 </para>
1855 <para>
1856 For more information, see
1857 <xref linkend="sql-createtable"/>.
1858 </para>
1859 </glossdef>
1860 </glossentry>
1862 <glossentry id="glossary-toast">
1863 <glossterm>TOAST</glossterm>
1864 <glossdef>
1865 <para>
1866 A mechanism by which large attributes of table rows are split and
1867 stored in a secondary table, called the <firstterm>TOAST table</firstterm>.
1868 Each relation with large attributes has its own TOAST table.
1869 </para>
1870 <para>
1871 For more information, see
1872 <xref linkend="storage-toast" />.
1873 </para>
1874 </glossdef>
1875 </glossentry>
1877 <glossentry id="glossary-transaction">
1878 <glossterm>Transaction</glossterm>
1879 <glossdef>
1880 <para>
1881 A combination of commands that must act as a single
1882 <glossterm linkend="glossary-atomic">atomic</glossterm> command: they all
1883 succeed or all fail as a single unit, and their effects are not visible to
1884 other <glossterm linkend="glossary-session">sessions</glossterm> until
1885 the transaction is complete, and possibly even later, depending on the
1886 isolation level.
1887 </para>
1888 <para>
1889 For more information, see
1890 <xref linkend="transaction-iso"/>.
1891 </para>
1892 </glossdef>
1893 </glossentry>
1895 <glossentry id="glossary-xid">
1896 <glossterm>Transaction ID</glossterm>
1897 <glossdef>
1898 <para>
1899 The numerical, unique, sequentially-assigned identifier that each
1900 transaction receives when it first causes a database modification.
1901 Frequently abbreviated as <firstterm>xid</firstterm>.
1902 When stored on disk, xids are only 32-bits wide, so only
1903 approximately four billion write transaction IDs can be generated;
1904 to permit the system to run for longer than that,
1905 <firstterm>epochs</firstterm> are used, also 32 bits wide.
1906 When the counter reaches the maximum xid value, it starts over at
1907 <literal>3</literal> (values under that are reserved) and the
1908 epoch value is incremented by one.
1909 In some contexts, the epoch and xid values are
1910 considered together as a single 64-bit value; see <xref
1911 linkend="transaction-id"/> for more details.
1912 </para>
1913 <para>
1914 For more information, see
1915 <xref linkend="datatype-oid"/>.
1916 </para>
1917 </glossdef>
1918 </glossentry>
1920 <glossentry id="glossary-tps">
1921 <glossterm>Transactions per second (TPS)</glossterm>
1922 <glossdef>
1923 <para>
1924 Average number of transactions that are executed per second,
1925 totaled across all sessions active for a measured run.
1926 This is used as a measure of the performance characteristics of
1927 an instance.
1928 </para>
1929 </glossdef>
1930 </glossentry>
1932 <glossentry id="glossary-trigger">
1933 <glossterm>Trigger</glossterm>
1934 <glossdef>
1935 <para>
1936 A <glossterm linkend="glossary-function">function</glossterm> which can
1937 be defined to execute whenever a certain operation (<command>INSERT</command>,
1938 <command>UPDATE</command>, <command>DELETE</command>,
1939 <command>TRUNCATE</command>) is applied to a
1940 <glossterm linkend="glossary-relation">relation</glossterm>.
1941 A trigger executes within the same
1942 <glossterm linkend="glossary-transaction">transaction</glossterm> as the
1943 statement which invoked it, and if the function fails, then the invoking
1944 statement also fails.
1945 </para>
1946 <para>
1947 For more information, see
1948 <xref linkend="sql-createtrigger"/>.
1949 </para>
1950 </glossdef>
1951 </glossentry>
1953 <glossentry id="glossary-tuple">
1954 <glossterm>Tuple</glossterm>
1955 <glossdef>
1956 <para>
1957 A collection of <glossterm linkend="glossary-attribute">attributes</glossterm>
1958 in a fixed order.
1959 That order may be defined by the <glossterm linkend="glossary-table">table</glossterm>
1960 (or other <glossterm linkend="glossary-relation">relation</glossterm>)
1961 where the tuple is contained, in which case the tuple is often called a
1962 <firstterm>row</firstterm>. It may also be defined by the structure of a
1963 result set, in which case it is sometimes called a <firstterm>record</firstterm>.
1964 </para>
1965 </glossdef>
1966 </glossentry>
1968 <glossentry id="glossary-unique-constraint">
1969 <glossterm>Unique constraint</glossterm>
1970 <glossdef>
1971 <para>
1972 A type of <glossterm linkend="glossary-constraint">constraint</glossterm>
1973 defined on a <glossterm linkend="glossary-relation">relation</glossterm>
1974 which restricts the values allowed in one or a combination of columns
1975 so that each value or combination of values can only appear once in the
1976 relation &mdash; that is, no other row in the relation contains values
1977 that are equal to those.
1978 </para>
1979 <para>
1980 Because <glossterm linkend="glossary-null">null values</glossterm> are
1981 not considered equal to each other, multiple rows with null values are
1982 allowed to exist without violating the unique constraint.
1983 </para>
1984 </glossdef>
1985 </glossentry>
1987 <glossentry id="glossary-unlogged">
1988 <glossterm>Unlogged</glossterm>
1989 <glossdef>
1990 <para>
1991 The property of certain <glossterm linkend="glossary-relation">relations</glossterm>
1992 that the changes to them are not reflected in the
1993 <glossterm linkend="glossary-wal">WAL</glossterm>.
1994 This disables replication and crash recovery for these relations.
1995 </para>
1996 <para>
1997 The primary use of unlogged tables is for storing
1998 transient work data that must be shared across processes.
1999 </para>
2000 <para>
2001 <glossterm linkend="glossary-temporary-table">Temporary tables</glossterm>
2002 are always unlogged.
2003 </para>
2004 </glossdef>
2005 </glossentry>
2007 <glossentry id="glossary-update">
2008 <glossterm>Update</glossterm>
2009 <glossdef>
2010 <para>
2011 An <acronym>SQL</acronym> command used to modify
2012 <glossterm linkend="glossary-tuple">rows</glossterm>
2013 that may already exist in a specified <glossterm linkend="glossary-table">table</glossterm>.
2014 It cannot create or remove rows.
2015 </para>
2016 <para>
2017 For more information, see
2018 <xref linkend="sql-update"/>.
2019 </para>
2020 </glossdef>
2021 </glossentry>
2023 <glossentry id="glossary-user">
2024 <glossterm>User</glossterm>
2025 <glossdef>
2026 <para>
2027 A <glossterm linkend="glossary-role">role</glossterm> that has the
2028 <firstterm>login privilege</firstterm>
2029 (see <xref linkend="role-attributes"/>).
2030 </para>
2031 </glossdef>
2032 </glossentry>
2034 <glossentry id="glossary-user-mapping">
2035 <glossterm>User mapping</glossterm>
2036 <glossdef>
2037 <para>
2038 The translation of login credentials in the local
2039 <glossterm linkend="glossary-database">database</glossterm> to credentials
2040 in a remote data system defined by a
2041 <glossterm linkend="glossary-foreign-data-wrapper">foreign data wrapper</glossterm>.
2042 </para>
2043 <para>
2044 For more information, see
2045 <xref linkend="sql-createusermapping"/>.
2046 </para>
2047 </glossdef>
2048 </glossentry>
2050 <glossentry id="glossary-vacuum">
2051 <glossterm>Vacuum</glossterm>
2052 <glossdef>
2053 <para>
2054 The process of removing outdated
2055 <glossterm linkend="glossary-tuple">tuple versions</glossterm>
2056 from tables or materialized views, and other closely related
2057 processing required by <productname>PostgreSQL</productname>'s
2058 implementation of <glossterm linkend="glossary-mvcc">MVCC</glossterm>.
2059 This can be initiated through the use of
2060 the <command>VACUUM</command> command, but can also be handled automatically
2061 via <glossterm linkend="glossary-autovacuum">autovacuum</glossterm> processes.
2062 </para>
2063 <para>
2064 For more information, see
2065 <xref linkend="routine-vacuuming"/> .
2066 </para>
2067 </glossdef>
2068 </glossentry>
2070 <glossentry id="glossary-view">
2071 <glossterm>View</glossterm>
2072 <glossdef>
2073 <para>
2074 A <glossterm linkend="glossary-relation">relation</glossterm> that is defined by a
2075 <command>SELECT</command> statement, but has no storage of its own.
2076 Any time a query references a view, the definition of the view is
2077 substituted into the query as if the user had typed it as a subquery
2078 instead of the name of the view.
2079 </para>
2080 <para>
2081 For more information, see
2082 <xref linkend="sql-createview"/>.
2083 </para>
2084 </glossdef>
2085 </glossentry>
2087 <glossentry id="glossary-vm">
2088 <glossterm>Visibility map (fork)</glossterm>
2089 <glossdef>
2090 <para>
2091 A storage structure that keeps metadata about each data page
2092 of a table's main fork. The visibility map entry for
2093 each page stores two bits: the first one
2094 (<literal>all-visible</literal>) indicates that all tuples
2095 in the page are visible to all transactions. The second one
2096 (<literal>all-frozen</literal>) indicates that all tuples
2097 in the page are marked frozen.
2098 </para>
2099 </glossdef>
2100 </glossentry>
2102 <glossentry>
2103 <glossterm>WAL</glossterm>
2104 <glosssee otherterm="glossary-wal" />
2105 </glossentry>
2107 <glossentry id="glossary-wal-archiver">
2108 <glossterm>WAL archiver (process)</glossterm>
2109 <glossdef>
2110 <para>
2111 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
2112 which, if enabled, saves copies of
2113 <glossterm linkend="glossary-wal-file">WAL files</glossterm>
2114 for the purpose of creating backups or keeping
2115 <glossterm linkend="glossary-replica">replicas</glossterm> current.
2116 </para>
2117 <para>
2118 For more information, see
2119 <xref linkend="continuous-archiving"/>.
2120 </para>
2121 </glossdef>
2122 </glossentry>
2124 <glossentry id="glossary-wal-file">
2125 <glossterm>WAL file</glossterm>
2126 <glossdef>
2127 <para>
2128 Also known as <firstterm>WAL segment</firstterm> or
2129 <firstterm>WAL segment file</firstterm>.
2130 Each of the sequentially-numbered files that provide storage space for
2131 <glossterm linkend="glossary-wal">WAL</glossterm>.
2132 The files are all of the same predefined size
2133 and are written in sequential order, interspersing changes
2134 as they occur in multiple simultaneous sessions.
2135 If the system crashes, the files are read in order, and each of the
2136 changes is replayed to restore the system to the state it was in
2137 before the crash.
2138 </para>
2139 <para>
2140 Each WAL file can be released after a
2141 <glossterm linkend="glossary-checkpoint">checkpoint</glossterm>
2142 writes all the changes in it to the corresponding data files.
2143 Releasing the file can be done either by deleting it, or by changing its
2144 name so that it will be used in the future, which is called
2145 <firstterm>recycling</firstterm>.
2146 </para>
2147 <para>
2148 For more information, see
2149 <xref linkend="wal-internals"/>.
2150 </para>
2151 </glossdef>
2152 </glossentry>
2154 <glossentry id="glossary-wal-record">
2155 <glossterm>WAL record</glossterm>
2156 <glossdef>
2157 <para>
2158 A low-level description of an individual data change.
2159 It contains sufficient information for the data change to be
2160 re-executed (<firstterm>replayed</firstterm>) in case a system failure
2161 causes the change to be lost.
2162 WAL records use a non-printable binary format.
2163 </para>
2164 <para>
2165 For more information, see
2166 <xref linkend="wal-internals"/>.
2167 </para>
2168 </glossdef>
2169 </glossentry>
2171 <glossentry id="glossary-wal-receiver">
2172 <glossterm>WAL receiver (process)</glossterm>
2173 <glossdef>
2174 <para>
2175 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
2176 that runs on a <glossterm linkend="glossary-replica">replica</glossterm>
2177 to receive WAL from the
2178 <glossterm linkend="glossary-primary-server">primary server</glossterm>
2179 for replay by the
2180 <glossterm linkend="glossary-startup-process">startup process</glossterm>.
2181 </para>
2183 <para>
2184 For more information, see
2185 <xref linkend="warm-standby"/>.
2186 </para>
2187 </glossdef>
2188 </glossentry>
2190 <glossentry>
2191 <glossterm>WAL segment</glossterm>
2192 <glosssee otherterm="glossary-wal-file" />
2193 </glossentry>
2195 <glossentry id="glossary-wal-sender">
2196 <glossterm>WAL sender (process)</glossterm>
2197 <glossdef>
2198 <para>
2199 A special <glossterm linkend="glossary-backend">backend process</glossterm>
2200 that streams WAL over a network. The receiving end can be a
2201 <glossterm linkend="glossary-wal-receiver">WAL receiver</glossterm>
2202 in a <glossterm linkend="glossary-replica">replica</glossterm>,
2203 <xref linkend="app-pgreceivewal"/>, or any other client program
2204 that speaks the replication protocol.
2205 </para>
2206 </glossdef>
2207 </glossentry>
2209 <glossentry id="glossary-wal-summarizer">
2210 <glossterm>WAL summarizer (process)</glossterm>
2211 <glossdef>
2212 <para>
2213 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
2214 that summarizes WAL data for
2215 <glossterm linkend="glossary-incremental-backup">incremental backups</glossterm>.
2216 </para>
2217 <para>
2218 For more information, see <xref linkend="runtime-config-wal-summarization"/>.
2219 </para>
2220 </glossdef>
2221 </glossentry>
2223 <glossentry id="glossary-wal-writer">
2224 <glossterm>WAL writer (process)</glossterm>
2225 <glossdef>
2226 <para>
2227 An <glossterm linkend="glossary-auxiliary-proc">auxiliary process</glossterm>
2228 that writes <glossterm linkend="glossary-wal-record">WAL records</glossterm>
2229 from <glossterm linkend="glossary-shared-memory">shared memory</glossterm> to
2230 <glossterm linkend="glossary-wal-file">WAL files</glossterm>.
2231 </para>
2232 <para>
2233 For more information, see
2234 <xref linkend="runtime-config-wal"/>.
2235 </para>
2236 </glossdef>
2237 </glossentry>
2239 <glossentry id="glossary-window-function">
2240 <glossterm>Window function (routine)</glossterm>
2241 <glossdef>
2242 <para>
2243 A type of <glossterm linkend="glossary-function">function</glossterm>
2244 used in a <glossterm linkend="glossary-query">query</glossterm>
2245 that applies to a <glossterm linkend="glossary-partition">partition</glossterm>
2246 of the query's <glossterm linkend="glossary-result-set">result set</glossterm>;
2247 the function's result is based on values found in
2248 <glossterm linkend="glossary-tuple">rows</glossterm> of the same partition or frame.
2249 </para>
2250 <para>
2251 All <glossterm linkend="glossary-aggregate">aggregate functions</glossterm>
2252 can be used as window functions, but window functions can also be
2253 used to, for example, give ranks to each of the rows in the partition.
2254 Also known as <firstterm>analytic functions</firstterm>.
2255 </para>
2256 <para>
2257 For more information, see
2258 <xref linkend="tutorial-window"/>.
2259 </para>
2260 </glossdef>
2261 </glossentry>
2263 <glossentry id="glossary-wal">
2264 <glossterm>Write-ahead log</glossterm>
2265 <glossdef>
2266 <para>
2267 The journal that keeps track of the changes in the
2268 <glossterm linkend="glossary-db-cluster">database cluster</glossterm>
2269 as user- and system-invoked operations take place.
2270 It comprises many individual
2271 <glossterm linkend="glossary-wal-record">WAL records</glossterm> written
2272 sequentially to <glossterm linkend="glossary-wal-file">WAL files</glossterm>.
2273 </para>
2274 </glossdef>
2275 </glossentry>
2276 </glosslist>
2277 </appendix>