## 9.27.系统管理功能 [9.27.1. 配置设置功能](functions-admin.html#FUNCTIONS-ADMIN-SET) [9.27.2. 服务器信令功能](functions-admin.html#FUNCTIONS-ADMIN-SIGNAL) [9.27.3. 备份控制功能](functions-admin.html#FUNCTIONS-ADMIN-BACKUP) [9.27.4. 恢复控制功能](functions-admin.html#FUNCTIONS-RECOVERY-CONTROL) [9.27.5. 快照同步功能](functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION) [9.27.6. 复制管理功能](functions-admin.html#FUNCTIONS-REPLICATION) [9.27.7. 数据库对象管理功能](functions-admin.html#FUNCTIONS-ADMIN-DBOBJECT) [9.27.8. 索引维护功能](functions-admin.html#FUNCTIONS-ADMIN-INDEX) [9.27.9. 通用文件访问功能](functions-admin.html#FUNCTIONS-ADMIN-GENFILE) [9.27.10. 咨询锁功能](functions-admin.html#FUNCTIONS-ADVISORY-LOCKS) 本节介绍的功能用于控制和监视PostgreSQL安装。 ### 9.27.1.配置设置功能 [](<>)[](<>)[](<>) [表9.85](functions-admin.html#FUNCTIONS-ADMIN-SET-TABLE)显示可用于查询和更改运行时配置参数的函数。 **表9.85。配置设置功能** | 作用

描述

例子 | | -------------------------- | | [](<>) `当前_设置`(*`设置你的名字`* `文本` [,想念你好吗*` _布尔值`* `]) →`文本`

返回设置的当前值*`设置你的名字`*.如果没有这样的设置,`当前_设置`抛出错误,除非*`想念你好吗`*是供应的,也是`符合事实的`(在这种情况下,返回NULL)。此函数对应于SQL命令[显示](sql-show.html).

`当前_设置('datestyle')` → `ISO,MDY` | | [](<>) `设置配置` ( *`设置你的名字`* `文本`, *`新价值`* `文本`, *`你是本地人吗`* `布尔值` ) → `文本`

设置参数*`设置你的名字`*到*`新价值`*,并返回该值。如果*`你是本地人吗`*是`符合事实的`,新值仅在当前交易期间适用。如果希望新值应用于当前会话的其余部分,请使用`错误的`相反此函数对应于SQL命令[设置](sql-set.html).

`set_config('log_statement_stats','off',false)` → `关` | ### 9.27.2.服务器信令功能 [](<>) 中显示的功能[表9.86](functions-admin.html#FUNCTIONS-ADMIN-SIGNAL-TABLE)向其他服务器进程发送控制信号。默认情况下,这些功能的使用仅限于超级用户,但使用这些功能的其他人可能会被授予访问权限`授予`,但有明显的例外。 每个函数都返回`符合事实的`如果成功发送了信号`错误的`如果发送信号失败。 **表9.86。服务器信令功能** | 作用

描述 | | -------------- | | [](<>) `pg_取消后端` ( *`pid`* `整数` ) → `布尔值`

取消对其后端进程具有指定进程ID的会话的当前查询。如果调用角色是其后端正在被取消的角色的成员,或者调用角色已被授予,则也允许这样做`pg_信号_后端`但是,只有超级用户可以取消超级用户后端。 | | [](<>) `pg_日志_后端_内存_上下文` ( *`pid`* `整数` ) → `布尔值`

请求使用指定的进程ID记录后端的内存上下文。这些内存上下文将在`日志`消息级别。它们将根据日志配置集出现在服务器日志中(请参阅[第20.8节](runtime-config-logging.html)获取更多信息),但无论[客户\_闵\_信息](runtime-config-client.html#GUC-CLIENT-MIN-MESSAGES)。只有超级用户才能请求记录内存上下文。 | | [](<>) `pg_重新加载_形态` () → `布尔值`

使PostgreSQL server的所有进程重新加载其配置文件。(这是通过向postmaster进程发送SIGHUP信号来启动的,postmaster进程将SIGHUP发送给其每个子进程。)你可以使用[`pg_文件_设置`](view-pg-file-settings.html)和[`pg_hba_文件_规则`](view-pg-hba-file-rules.html)视图,以在重新加载之前检查配置文件是否存在可能的错误。 | | [](<>) `pg_旋转_日志文件` () → `布尔值`

通知日志文件管理器立即切换到新的输出文件。这仅在内置日志收集器正在运行时有效,因为在其他情况下没有日志文件管理器子进程。 | | [](<>) `pg_终止_后端` ( *`pid`* `整数`, *`暂停`* `比基特` `违约` `0` ) → `布尔值`

终止其后端进程具有指定进程ID的会话。如果调用角色是其后端正在被终止的角色的成员,或者调用角色已被授予权限,则也允许这样做`pg_信号_后端`但是,只有超级用户可以终止超级用户后端。

如果*`暂停`*如果未指定或为零,则此函数返回`符合事实的`进程是否实际终止,仅表示信号发送成功。如果*`暂停`*指定(以毫秒为单位)并大于零时,函数将等待,直到进程实际终止或给定的时间过去。如果进程终止,函数返回`符合事实的`。超时时,会发出警告并`错误的`被退回。 | `pg_取消后端`和`pg_终止_后端`向由进程ID标识的后端进程发送信号(分别为SIGINT或SIGTERM)。可以从`pid`专栏`pg_统计活动`查看,或通过列出`博士后`服务器上的进程(在Unix上使用ps或在Windows上使用任务管理器)。活动后端的角色可以从`usename`专栏`pg_统计活动`看法 `pg_日志_后端_内存_上下文`可用于记录后端进程的内存上下文。例如: ``` postgres=# SELECT pg_log_backend_memory_contexts(pg_backend_pid()); pg_log_backend_memory_contexts ### 9.27.3. Backup Control Functions []() The functions shown in [Table 9.87](functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE) assist in making on-line backups. These functions cannot be executed during recovery (except non-exclusive `pg_start_backup`, non-exclusive `pg_stop_backup`, `pg_is_in_backup`, `pg_backup_start_time` and `pg_wal_lsn_diff`). For details about proper usage of these functions, see [Section 26.3](continuous-archiving.html). **Table 9.87. Backup Control Functions** | Function

Description | |--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | []() `pg_create_restore_point` ( *`name`* `text` ) → `pg_lsn`

Creates a named marker record in the write-ahead log that can later be used as a recovery target, and returns the corresponding write-ahead log location. The given name can then be used with [recovery\_target\_name](runtime-config-wal.html#GUC-RECOVERY-TARGET-NAME) to specify the point up to which recovery will proceed. Avoid creating multiple restore points with the same name, since recovery will stop at the first one whose name matches the recovery target.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function. | | []() `pg_current_wal_flush_lsn` () → `pg_lsn`

Returns the current write-ahead log flush location (see notes below). | | []() `pg_current_wal_insert_lsn` () → `pg_lsn`

Returns the current write-ahead log insert location (see notes below). | | []() `pg_current_wal_lsn` () → `pg_lsn`

Returns the current write-ahead log write location (see notes below). | | []() `pg_start_backup` ( *`label`* `text` [, *`fast`* `boolean` [, *`exclusive`* `boolean` ]] ) → `pg_lsn`

Prepares the server to begin an on-line backup. The only required parameter is an arbitrary user-defined label for the backup. (Typically this would be the name under which the backup dump file will be stored.) If the optional second parameter is given as `true`, it specifies executing `pg_start_backup` as quickly as possible. This forces an immediate checkpoint which will cause a spike in I/O operations, slowing any concurrently executing queries. The optional third parameter specifies whether to perform an exclusive or non-exclusive backup (default is exclusive).

When used in exclusive mode, this function writes a backup label file (`backup_label`) and, if there are any links in the `pg_tblspc/` directory, a tablespace map file (`tablespace_map`) into the database cluster's data directory, then performs a checkpoint, and then returns the backup's starting write-ahead log location. (The user can ignore this result value, but it is provided in case it is useful.) When used in non-exclusive mode, the contents of these files are instead returned by the `pg_stop_backup` function, and should be copied to the backup area by the user.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function. | |[]() `pg_stop_backup` ( *`exclusive`* `boolean` [, *`wait_for_archive`* `boolean` ] ) → `setof record` ( *`lsn`* `pg_lsn`, *`labelfile`* `text`, *`spcmapfile`* `text` )

Finishes performing an exclusive or non-exclusive on-line backup. The *`exclusive`* parameter must match the previous `pg_start_backup` call. In an exclusive backup, `pg_stop_backup` removes the backup label file and, if it exists, the tablespace map file created by `pg_start_backup`. In a non-exclusive backup, the desired contents of these files are returned as part of the result of the function, and should be written to files in the backup area (not in the data directory).

There is an optional second parameter of type `boolean`. If false, the function will return immediately after the backup is completed, without waiting for WAL to be archived. This behavior is only useful with backup software that independently monitors WAL archiving. Otherwise, WAL required to make the backup consistent might be missing and make the backup useless. By default or when this parameter is true, `pg_stop_backup` will wait for WAL to be archived when archiving is enabled. (On a standby, this means that it will wait only when `archive_mode` = `always`. If write activity on the primary is low, it may be useful to run `pg_switch_wal` on the primary in order to trigger an immediate segment switch.)

When executed on a primary, this function also creates a backup history file in the write-ahead log archive area. The history file includes the label given to `pg_start_backup`, the starting and ending write-ahead log locations for the backup, and the starting and ending times of the backup. After recording the ending location, the current write-ahead log insertion point is automatically advanced to the next write-ahead log file, so that the ending write-ahead log file can be archived immediately to complete the backup.

The result of the function is a single record. The *`lsn`* column holds the backup's ending write-ahead log location (which again can be ignored). The second and third columns are `NULL` when ending an exclusive backup; after a non-exclusive backup they hold the desired contents of the label and tablespace map files.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function.| | `pg_stop_backup` () → `pg_lsn`

Finishes performing an exclusive on-line backup. This simplified version is equivalent to `pg_stop_backup(true, true)`, except that it only returns the `pg_lsn` result.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function. | | []() `pg_is_in_backup` () → `boolean`

Returns true if an on-line exclusive backup is in progress. | | []() `pg_backup_start_time` () → `timestamp with time zone`

Returns the start time of the current on-line exclusive backup if one is in progress, otherwise `NULL`. | | []() `pg_switch_wal` () → `pg_lsn`

Forces the server to switch to a new write-ahead log file, which allows the current file to be archived (assuming you are using continuous archiving). The result is the ending write-ahead log location plus 1 within the just-completed write-ahead log file. If there has been no write-ahead log activity since the last write-ahead log switch, `pg_switch_wal` does nothing and returns the start location of the write-ahead log file currently in use.

This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function. | | []() `pg_walfile_name` ( *`lsn`* `pg_lsn` ) → `text`

Converts a write-ahead log location to the name of the WAL file holding that location. | | []() `pg_walfile_name_offset` ( *`lsn`* `pg_lsn` ) → `record` ( *`file_name`* `text`, *`file_offset`* `integer` )

Converts a write-ahead log location to a WAL file name and byte offset within that file. | | []() `pg_wal_lsn_diff` ( *`lsn1`* `pg_lsn`, *`lsn2`* `pg_lsn` ) → `numeric`

Calculates the difference in bytes (*`lsn1`* - *`lsn2`*) between two write-ahead log locations. This can be used with `pg_stat_replication` or some of the functions shown in [Table 9.87](functions-admin.html#FUNCTIONS-ADMIN-BACKUP-TABLE) to get the replication lag. | `pg_current_wal_lsn` displays the current write-ahead log write location in the same format used by the above functions. Similarly, `pg_current_wal_insert_lsn` displays the current write-ahead log insertion location and `pg_current_wal_flush_lsn` displays the current write-ahead log flush location. The insertion location is the “logical” end of the write-ahead log at any instant, while the write location is the end of what has actually been written out from the server's internal buffers, and the flush location is the last location known to be written to durable storage. The write location is the end of what can be examined from outside the server, and is usually what you want if you are interested in archiving partially-complete write-ahead log files. The insertion and flush locations are made available primarily for server debugging purposes. These are all read-only operations and do not require superuser permissions. You can use `pg_walfile_name_offset` to extract the corresponding write-ahead log file name and byte offset from a `pg_lsn` value. For example: ``` postgres=#从pg_walfile_name_offset(pg_stop_backup())中选择\*;文件|文件|偏移量 ### 9.27.4.恢复控制功能 中显示的功能[表9.88](functions-admin.html#FUNCTIONS-RECOVERY-INFO-TABLE)提供有关备用服务器当前状态的信息。这些功能可以在恢复和正常运行期间执行。 **表9.88。恢复信息功能** | 作用

描述 | | -------------- | | [](<>) `pg_正在恢复中` () → `布尔值`

如果恢复仍在进行中,则返回true。 | | [](<>) `pg_last_wal_receive_lsn` () → `pg_lsn`

返回上次通过流式复制接收并同步到磁盘的预写日志位置。在进行流式复制时,这将单调增加。如果恢复已完成,则在恢复期间,在最后一条WAL记录接收并同步到磁盘的位置,恢复将保持静态。如果流式复制已禁用,或者尚未启动,则该函数将返回`无效的`. | | [](<>) `pg_last_wal_replay_lsn` () → `pg_lsn`

返回在恢复过程中重放的上一个预写日志位置。如果复苏仍在进行中,这将单调增加。如果恢复已完成,则在恢复期间应用的最后一条WAL记录的位置上,该记录将保持静态。当服务器正常启动且未恢复时,该函数返回`无效的`. | | [](<>) `pg_last_xact_replay_时间戳` () → `带时区的时间戳`

返回恢复期间重播的最后一个事务的时间戳。这是在主服务器上生成该事务的提交或中止WAL记录的时间。如果在恢复过程中没有重放任何事务,则函数返回`无效的`.否则,如果恢复仍在进行中,这将单调增加。如果恢复已完成,则在恢复过程中应用的最后一个事务发生时,这将保持静态。当服务器正常启动且未恢复时,该函数返回`无效的`. | 中显示的功能[表9.89](functions-admin.html#FUNCTIONS-RECOVERY-CONTROL-TABLE)控制恢复的进程。这些功能只能在恢复期间执行。 **表9.89。恢复控制功能** | 作用

描述 | | -------------- | | [](<>) `pg_是_wal_replay_暂停` () → `布尔值`

如果请求恢复暂停,则返回true。 | | [](<>) `pg_get_wal_replay_pause_state` () → `文本`

返回恢复暂停状态。返回值为`没有停顿`如果不要求暂停,`暂停请求`如果请求暂停但恢复尚未暂停,以及`停顿`如果恢复实际上已暂停。 | | [](<>) `pg_推广`(德)*`等待`* `布尔值` `违约` `对`"*`等一下`* `整数` `违约` `60`→`布尔值`

将备用服务器升级为主状态。与*`等待`*开始`对`(默认设置),函数将等待升级完成或*`等一下`*几秒钟过去了,又回来了`对`如果推广成功`假的`否则。如果*`等待`*即将`错误的`,函数返回`符合事实的`在发送了`SIGUSR1`向邮政局长发出信号,促使其晋升。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_wal_replay_暂停` () → `无效的`

请求暂停恢复。请求并不意味着恢复立即停止。如果希望保证恢复实际上已暂停,则需要检查`pg_get_wal_replay_pause_state()`.注意`pg_是_wal_replay_暂停()`返回是否发出请求。恢复暂停时,不会应用进一步的数据库更改。如果热备用处于活动状态,则所有新查询都将看到数据库的相同一致快照,并且在恢复之前不会生成进一步的查询冲突。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_wal_replay_resume` () → `无效的`

如果已暂停,则重新启动恢复。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | `pg_wal_replay_暂停`和`pg_wal_replay_resume`升级正在进行时无法执行。如果在恢复暂停时触发升级,暂停状态将结束,升级将继续。 如果流式复制被禁用,暂停状态可能会无限期地继续,而不会出现问题。如果正在进行流式复制,则将继续接收WAL记录,这将最终填满可用磁盘空间,具体取决于暂停的持续时间、WAL生成的速率和可用磁盘空间。 ### 9.27.5.快照同步功能 PostgreSQL允许数据库会话同步快照。A.*快照*确定哪些数据对使用快照的事务可见。当两个或多个会话需要查看数据库中相同的内容时,需要同步快照。如果两个会话只是独立地启动它们的事务,那么在两个会话的执行之间总是有可能提交第三个事务`开始交易`命令,以便一个会话看到该事务的效果,而另一个会话看不到。 为了解决这个问题,PostgreSQL允许事务*出口*它正在使用的快照。只要出口交易保持打开状态,其他交易就可以继续*进口*它的快照,从而保证它们看到的数据库视图与第一个事务看到的完全相同。但请注意,这些事务中的任何一个所做的任何数据库更改对其他事务都是不可见的,这与未提交的事务所做的更改一样。因此,事务是相对于预先存在的数据进行同步的,但对于它们自己所做的更改,事务会正常运行。 快照将与`pg_导出_快照`函数,如中所示[表9.90](functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION-TABLE),并随[设置事务](sql-set-transaction.html)命令 **表9.90。快照同步功能** | 作用

描述 | | -------------- | | [](<>) `pg_导出_快照` () → `文本`

保存事务的当前快照并返回`文本`标识快照的字符串。必须将此字符串(在数据库之外)传递给希望导入快照的客户端。只有在导出快照的事务结束之前,快照才可用于导入。

如果需要,事务可以导出多个快照。请注意,这样做只在以下情况下有用:`阅读承诺`交易,从年开始`可重复读取`在更高的隔离级别下,事务在其整个生命周期中使用相同的快照。一旦事务导出了任何快照,就无法使用[准备交易](sql-prepare-transaction.html). | ### 9.27.6.复制管理功能 中显示的功能[表9.91](functions-admin.html#FUNCTIONS-REPLICATION-TABLE)用于控制复制功能并与之交互。看见[第27.2.5节](warm-standby.html#STREAMING-REPLICATION), [第27.2.6节](warm-standby.html#STREAMING-REPLICATION-SLOTS)和[第50章](replication-origins.html)有关基本功能的信息。默认情况下,仅允许超级用户使用复制源的函数,但通过使用`授予`命令复制插槽的功能仅限于超级用户和具有`复制`特权 其中许多函数在复制协议中具有等效的命令;看见[第53.4节](protocol-replication.html). 中描述的功能[第9.27.3节](functions-admin.html#FUNCTIONS-ADMIN-BACKUP), [第9.27.4节](functions-admin.html#FUNCTIONS-RECOVERY-CONTROL)和[第9.27.5节](functions-admin.html#FUNCTIONS-SNAPSHOT-SYNCHRONIZATION)也与复制相关。 **表9.91。复制管理功能** | 作用

描述 | | -------------- | | [](<>) `pg_创建_物理_复制_插槽` ( *`插槽名称`* `名称` [, *`立即保留_ `*布尔值` `,短暂的*` `*布尔值` `] ) → `记录` ( *`插槽名称`* `名称`, *`lsn`* `pg_lsn` )

创建名为的新物理复制插槽*`插槽名称`*.可选的第二个参数,当`符合事实的`,指定立即保留此复制插槽的LSN;否则,LSN将在流复制客户端的第一次连接时保留。只有使用流式复制协议才能从物理插槽进行流式更改-请参阅[第53.4节](protocol-replication.html).可选的第三个参数,*`短暂的`*,当设置为true时,指定插槽不应永久存储到磁盘,且仅用于当前会话。如果出现任何错误,也会释放临时插槽。此函数对应于复制协议命令`创建\u复制\u插槽。。。身体的`. | | [](<>) `pg_drop_replication_slot` ( *`插槽名称`* `名称` ) → `无效的`

删除名为的物理或逻辑复制插槽*`插槽名称`*.与复制协议命令相同`删除\u复制\u插槽`。对于逻辑插槽,必须在连接到创建插槽所在的同一数据库时调用。 | | [](<>) `pg_创建_逻辑_复制_插槽` ( *`插槽名称`* `名称`, *`插件`* `名称` [, *`短暂的`* `布尔值`, *`双相_ `*布尔值` `] ) → `记录` ( *`插槽名称`* `名称`, *`lsn`* `pg_lsn` )

创建名为的新逻辑(解码)复制插槽*`插槽名称`*使用输出插件*`插件`*.可选的第三个参数,*`短暂的`*,当设置为true时,指定插槽不应永久存储到磁盘,且仅用于当前会话。如果出现任何错误,也会释放临时插槽。可选的第四个参数,*`双相`*,当设置为true时,指定为此插槽启用已准备事务的解码。对该函数的调用与复制协议命令具有相同的效果`创建\u复制\u插槽。。。必然的`. | | [](<>) `pg_复制_物理_复制_插槽` ( *`src_插槽_名称`* `名称`, *`dst_插槽_名称`* `名称` [, *`短暂的`* `布尔值` ] ) → `记录` ( *`插槽名称`* `名称`, *`lsn`* `pg_lsn` )

复制名为的现有物理复制插槽*`src_插槽_名称`*到名为*`dst_插槽_名称`*.复制的物理插槽开始从与源插槽相同的LSN保留WAL。*`短暂的`*是可选的。如果*`短暂的`*则使用与源插槽相同的值。 | | [](<>) `pg_复制_逻辑_复制_插槽` ( *`src_插槽_名称`* `名称`, *`dst_插槽_名称`* `名称` \[, *`短暂的`* `布尔值` [, *`插件`* `名称` ]] ) → `记录` ( *`插槽名称`* `名称`, *`lsn`* `pg_lsn` )

复制名为的现有逻辑复制插槽*`src_插槽_名称`*到名为*`dst_插槽_名称`*,可以选择更改输出插件和持久性。复制的逻辑插槽从与源逻辑插槽相同的LSN开始。二者都*`短暂的`*和*`插件`*是可选的;如果省略,则使用源插槽的值。 | | [](<>) `pg_逻辑_插槽_获取_更改` ( *`插槽名称`* `名称`, *`高达`* `pg_lsn`, *`直到改变`* `整数`, `可变的` *`选项`* `文本[]` ) → `一套记录` ( *`lsn`* `pg_lsn`, *`希德`* `希德`, *`数据`* `文本` )

返回插槽中的更改*`插槽名称`*,从上次使用更改的点开始。如果*`高达`*和*`直到改变`*如果为空,则逻辑解码将继续,直到WAL结束。如果*`高达`*如果为非空,则解码将仅包括在指定LSN之前提交的事务。如果*`直到改变`*为非空,则当解码产生的行数超过指定值时,解码将停止。但是,请注意,返回的实际行数可能更大,因为只有在添加解码每个新事务提交时生成的行之后,才会检查此限制。 | | [](<>) `pg_逻辑_插槽_窥视_更改` ( *`插槽名称`* `名称`, *`高达`* `pg_lsn`, *`直到改变`* `整数`, `可变的` *`选项`* `文本[]` ) → `一套记录` ( *`lsn`* `pg_lsn`, *`希德`* `希德`, *`数据`* `文本` )

表现得就像`pg_逻辑_插槽_获取_更改()`功能,但不使用更改;也就是说,它们将在以后的通话中再次返回。 | | [](<>) `pg_逻辑_插槽_获取_二进制_更改` ( *`插槽名称`* `名称`, *`高达`* `pg_lsn`, *`直到改变`* `整数`, `可变的` *`选项`* `文本[]`→`一套记录` ( *`lsn`* `pg_lsn`, *`希德`* `希德`, *`日期`* `二进制数据` )

需要就像`pg_逻辑_插槽_获取_更改()`函数,但更改将作为`二进制数据`. | | [](<>) `pg_逻辑_插槽_窥视_二进制_更改` ( *`插槽名称`* `名称`, *`高达`* `pg_lsn`, *`直到改变`* `整数`, `可变的` *`选项`* `文本[]` ) → `一套记录` ( *`lsn`* `pg_lsn`, *`希德`* `希德`, *`数据`* `二进制数据` )

表现得就像`pg_逻辑_插槽_窥视_更改()`函数,但更改将作为`二进制数据`. | | [](<>) `pg_复制_插槽_升级` ( *`插槽名称`* `名称`, *`高达`* `pg_lsn` ) → `记录` ( *`插槽名称`* `姓名`,*`end_lsn`* `pg_lsn`)

推进一个名为的复制槽的当前确认位置*`槽名`*.插槽不会向后移动,也不会移动到当前插入位置之外。返回槽的名称和它前进到的实际位置。如果进行了任何推进,则在下一个检查点写出更新的插槽位置信息。因此,在发生崩溃时,插槽可能会返回到较早的位置。 | | [](<>) `pg_replication_origin_create`(*`节点名`* `文本`) →`样的`

创建具有给定外部名称的复制源,并返回分配给它的内部 ID。 | | [](<>) `pg_replication_origin_drop`(*`节点名`* `文本`) →`空白`

删除先前创建的复制源,包括任何关联的重播进度。 | | [](<>) `pg_replication_origin_oid`(*`节点名`* `文本`) →`样的`

按名称查找复制源并返回内部 ID。如果没有找到这样的复制起点,`空值`被退回。 | | [](<>) `pg_replication_origin_session_setup`(*`节点名`* `文本`) →`空白`

将当前会话标记为从给定源重播,允许跟踪重播进度。只能在当前未选择原点时使用。采用`pg_replication_origin_session_reset`撤销。 | | [](<>) `pg_replication_origin_session_reset`() →`空白`

取消效果`pg_replication_origin_session_setup()`. | | [](<>) `pg_replication_origin_session_is_setup`() →`布尔值`

如果在当前会话中选择了复制源,则返回 true。 | | [](<>) `pg_replication_origin_session_progress`(*`冲洗`* `布尔值`) →`pg_lsn`

返回当前会话中选择的复制源的重播位置。参数*`冲洗`*确定是否保证相应的本地事务已刷新到磁盘。 | | [](<>) `pg_replication_origin_xact_setup`(*`origin_lsn`* `pg_lsn`,*`origin_timestamp`* `带时区的时间戳`) →`空白`

将当前事务标记为重放已在给定 LSN 和时间戳处提交的事务。只能在使用选择复制源时调用`pg_replication_origin_session_setup`. | | [](<>) `pg_replication_origin_xact_reset`() →`空白`

取消效果`pg_replication_origin_xact_setup()`. | | [](<>) `pg_replication_origin_advance`(*`节点名`* `文本`,*`lsn`* `pg_lsn`) →`空白`

将给定节点的复制进度设置到给定位置。这主要用于设置初始位置,或在配置更改后设置新位置等。请注意,不小心使用此功能可能会导致数据复制不一致。 | | [](<>) `pg_replication_origin_progress`(*`节点名`* `文本`,*`冲洗`* `布尔值`) →`pg_lsn`

返回给定复制源的重播位置。参数*`冲洗`*确定是否保证相应的本地事务已刷新到磁盘。 | | [](<>) `pg_logical_emit_message`(*`事务性的`* `布尔值`,*`字首`* `文本`,*`内容`* `文本`) →`pg_lsn`

`pg_logical_emit_message`(*`事务性的`* `布尔值`,*`字首`* `文本`,*`内容`* `二进制数据`) →`pg_lsn`

发出逻辑解码信息。这可以用来通过WAL将通用消息传递给逻辑解码插件。这个*`交易的`*参数指定消息是应该是当前事务的一部分,还是应该在逻辑解码器读取记录后立即写入并解码。这个*`前缀`*参数是一个文本前缀,逻辑解码插件可以使用它来轻松识别感兴趣的消息。这个*`所容纳之物`*参数是消息的内容,以文本或二进制形式给出。 | ### 9.27.7.数据库对象管理功能 中显示的功能[表9.92](functions-admin.html#FUNCTIONS-ADMIN-DBSIZE)计算数据库对象的磁盘空间使用情况,或帮助演示或理解使用结果。`比基特`结果以字节为单位。如果将不代表现有对象的OID传递给其中一个函数,`无效的`被退回。 **表9.92。数据库对象大小函数** | 作用

描述 | | -------------- | | [](<>) `pg_柱尺寸`(`“任何”`) →`整数`

显示用于存储任何单个数据值的字节数。如果直接应用于表列值,这将反映所做的任何压缩。 | | [](<>) `pg_列_压缩`(`“任何”` ) → `文本`

显示了用于压缩单个可变长度值的压缩算法。退换商品`无效的`如果未压缩该值。 | | [](<>) `pg_数据库_大小` ( `名称` ) → `比基特`

`pg_数据库_大小` ( `老年人` ) → `比基特`

计算具有指定名称或OID的数据库使用的总磁盘空间。要使用此功能,您必须`连接`在指定数据库上的权限(默认情况下是授予的)或成为`pg_读取所有数据`角色 | | [](<>) `pg_索引_大小` ( `regclass` ) → `比基特`

计算附加到指定表的索引使用的总磁盘空间。 | | [](<>) `pg_关系_尺寸` ( *`关系`* `regclass` [, *`叉`* `文本` ] ) → `比基特`

计算指定关系的一个“fork”使用的磁盘空间。(请注意,在大多数情况下,使用更高级的功能更方便。)`pg_总尺寸_关系_尺寸`或`pg_表_尺寸`,将所有叉子的大小相加。)对于一个参数,它返回关系的主数据分支的大小。可以提供第二个参数来指定要检查的分叉:

* `主要的`返回关系的主数据分支的大小。

* `fsm`返回可用空间贴图的大小(请参见[第70.3节](storage-fsm.html))与这种关系有关。

* `虚拟机`返回可见性贴图的大小(请参见[第70.4节](storage-vm.html))与这种关系有关。

* `初始化`返回与关系关联的初始化叉的大小(如果有)。 | | [](<>) `pg_大小_字节` ( `文本` ) → `比基特`

将大小转换为人类可读的格式(由`pg_尺寸_漂亮`)变成字节。 | | [](<>) `pg_尺寸_漂亮` ( `比基特` ) → `文本`

`pg_尺寸_漂亮` ( `数字的` ) → `文本`

使用大小单位(字节、kB、MB、GB或TB,视情况而定)将字节大小转换为更易于人类阅读的格式。注意,单位是2的幂而不是10的幂,所以1kB是1024字节,1MB是1024字节2.=1048576字节,依此类推。 | | [](<>) `pg_表_尺寸` ( `regclass` ) → `比基特`

计算指定表使用的磁盘空间,不包括索引(但包括其TOAST表(如果有)、可用空间映射和可见性映射)。 | | [](<>) `pg_表空间_大小` ( `名称` ) → `比基特`

`pg_表空间_大小` ( `老年人` ) → `比基特`

计算具有指定名称或OID的表空间中使用的总磁盘空间。要使用此功能,您必须`创造`指定表空间上的权限,或成为`pg_读取所有数据`角色,除非它是当前数据库的默认表空间。 | | [](<>) `pg_总尺寸_关系_尺寸` ( `regclass` ) → `比基特`

计算指定表使用的总磁盘空间,包括所有索引和TOAST数据。结果相当于`pg_表_尺寸` `+` `pg_索引_大小`. | 上面对表或索引进行操作的函数接受`regclass`参数,它只是`pg_类`系统目录。但是,由于`regclass`数据类型的输入转换器将为您完成这项工作。看见[第8.19节](datatype-oid.html)详细信息。 中显示的功能[表9.93](functions-admin.html#FUNCTIONS-ADMIN-DBLOCATION)帮助识别与数据库对象关联的特定磁盘文件。 **表9.93。数据库对象定位函数** | 作用

描述 | | -------------- | | [](<>) `pg_关系_文件节点` ( *`关系`* `regclass` ) → `老年人`

返回当前分配给指定关系的“filenode”编号。filenode是用于关系的文件名的基本组件(请参见[第70.1节](storage-file-layout.html)更多信息)。对于大多数关系,结果与`pg_类`.`重新文件节点`,但对于某些系统目录`重新文件节点`为零,必须使用此函数才能获得正确的值。如果传递了一个没有存储的关系(如视图),则函数返回NULL。 | | [](<>) `pg_关系_文件路径` ( *`关系`* `regclass` ) → `文本`

返回整个文件路径名(相对于数据库群集的数据目录,`PGDATA`)关系的一部分。 | | [](<>) `pg_文件节点_关系` ( *`表空间`* `老年人`, *`文件节点`* `老年人` ) → `regclass`

根据存储关系的表空间OID和文件节点返回关系的OID。这本质上是`pg_关系_文件路径`。对于数据库默认表空间中的关系,表空间可以指定为零。退换商品`无效的`如果当前数据库中没有与给定值关联的关系。 | [表9.94](functions-admin.html#FUNCTIONS-ADMIN-COLLATION)列出用于管理排序规则的函数。 **表9.94。整理管理功能** | 作用

描述 | | -------------- | | [](<>) `pg_校对_实际_版本` ( `老年人` ) → `文本`

返回当前安装在操作系统中的排序规则对象的实际版本。如果这与中的值不同`pg_校勘`.`collversion`,则可能需要重建依赖于排序规则的对象。另见[更改排序规则](sql-altercollation.html). | | [](<>) `pg_导入_系统_排序` ( *`模式`* `regnamespace` ) → `整数`

将排序规则添加到系统目录中`pg_校勘`基于它在操作系统中找到的所有区域设置。这是什么`initdb`使用;看见[第24.2.2节](collation.html#COLLATION-MANAGING)更多细节。如果以后在操作系统中安装了其他区域设置,则可以再次运行此函数以添加新区域设置的排序规则。与中现有条目匹配的区域设置`pg_校勘`将被跳过。(但此函数不会删除基于操作系统中不再存在的区域设置的排序规则对象。)这个*`模式`*参数通常是`pg_目录`,但这不是一项要求;排序规则也可以安装到其他一些模式中。函数返回它创建的新排序规则对象的数量。此功能仅限超级用户使用。 | [表9.95](functions-admin.html#FUNCTIONS-INFO-PARTITION)列出提供分区表结构信息的函数。 **表9.95。划分信息函数** | 作用

描述 | | -------------- | | [](<>) `pg_划分_树` ( `regclass` ) → `一套记录` ( *`重温`* `regclass`, *`parentrelid`* `regclass`, *`岛`* `布尔值`, *`数量`* `整数` )

列出给定分区表或分区索引的分区树中的表或索引,每个分区一行。提供的信息包括分区的OID、其直接父级的OID、一个布尔值(表示分区是否为叶)和一个整数(表示分区在层次结构中的级别)。输入表或索引的级别值为0,其直接子分区的级别值为1,其分区的级别值为2,依此类推。如果关系不存在或不是分区或分区表,则不返回任何行。 | | [](<>) `pg_分区_祖先` ( `regclass` ) → `正则类集合`

列出给定分区的祖先关系,包括关系本身。如果关系不存在或不是分区或分区表,则不返回任何行。 | | [](<>) `pg_分区_根` ( `regclass` ) → `regclass`

返回给定关系所属分区树的最顶层父级。退换商品`无效的`如果关系不存在或不是分区或分区表。 | 例如,检查分区表中包含的数据的总大小`测量`,可以使用以下查询: ``` SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size FROM pg_partition_tree('measurement'); ``` ### 9.27.8.索引维护功能 [表9.96](functions-admin.html#FUNCTIONS-ADMIN-INDEX-TABLE)显示可用于索引维护任务的功能。(请注意,这些维护任务通常由autovacuum自动完成;只有在特殊情况下才需要使用这些功能。)恢复期间无法执行这些功能。这些函数的使用仅限于超级用户和给定索引的所有者。 **表9.96。索引维护功能** | 作用

描述 | | -------------- | | [](<>) `总结新的价值观` ( *`指数`* `regclass` ) → `整数`

扫描指定的BRIN索引,在基表中查找当前未由索引汇总的页面范围;对于任何这样的范围,它都会通过扫描这些表页来创建一个新的摘要索引元组。返回插入到索引中的新页面范围摘要的数量。 | | [](<>) `布林努山脉` ( *`指数`* `regclass`, *`区块号`* `比基特` ) → `整数`

汇总覆盖给定块的页面范围(如果尚未汇总)。这就像`总结新的价值观`但它只处理覆盖给定表块号的页面范围。 | | [](<>) `布林_去总结_山脉` ( *`指数`* `regclass`, *`区块号`* `比基特` ) → `无效的`

删除BRIN索引元组,该元组汇总覆盖给定表块的页面范围(如果有)。 | | [](<>) `杜松子酒清洁待处理清单` ( *`指数`* `regclass` ) → `比基特`

通过将指定GIN索引的“待定”列表中的条目批量移动到主GIN数据结构,来清理该列表。返回从挂起列表中删除的页数。如果参数是用`快速更新`选项禁用时,不会进行清理,结果为零,因为索引没有挂起列表。看见[第67.4.1节](gin-implementation.html#GIN-FAST-UPDATE)和[第67.5节](gin-tips.html)有关待处理列表的详细信息,以及`快速更新`选项 | ### 9.27.9.通用文件访问功能 中显示的功能[表9.97](functions-admin.html#FUNCTIONS-ADMIN-GENFILE-TABLE)提供对托管服务器的计算机上的文件的本机访问。仅数据库群集目录中的文件和`日志目录`可以访问,除非该用户是超级用户或被授予该角色`pg_读取_服务器_文件`.使用群集目录中文件的相对路径,以及与`日志目录`日志文件的配置设置。 请注意,向用户授予`pg_读取_文件()`,或相关函数,使它们能够读取服务器上数据库服务器进程可以读取的任何文件;这些函数绕过所有数据库内权限检查。这意味着,例如,具有这种访问权限的用户能够读取`pg_authid`存储身份验证信息的表,以及读取数据库中的任何表数据。因此,应仔细考虑是否允许访问这些功能。 其中一些函数采用可选的*`想念你好吗`*参数,指定文件或目录不存在时的行为。如果`符合事实的`,函数返回`无效的`或空结果集(视情况而定)。如果`错误的`,将引发一个错误。默认值是`错误的`. **表9.97。通用文件访问功能** | 作用

描述 | | -------------- | | [](<>) `pg_ls_dir` ( *`目录名`* `文本` [, *`想念你好吗_ `*布尔值` `,包括*`dot_dirs_ `*布尔值` `] ) → `文本集`

返回指定目录中所有文件(以及目录和其他特殊文件)的名称。这个*`包括_dot_dirs`*参数指示是否为“”还有“.”将被包括在结果集中;默认设置是排除它们。当需要时,包括它们可能很有用*`想念你好吗`*是`符合事实的`,以区分空目录和不存在的目录。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_ls_logdir` () → `一套记录` ( *`名称`* `文本`, *`大小`* `比基特`, *`修改`* `带时区的时间戳` )

返回服务器日志目录中每个普通文件的名称、大小和上次修改时间(mtime)。不包括以点开头的文件名、目录和其他特殊文件。

此功能仅限于超级用户和`pg_监视器`默认情况下为角色,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `普格鲁·鲁斯·沃尔迪尔` () → `一套记录` ( *`名称`* `文本`, *`大小`* `比基特`, *`修改`* `带时区的时间戳` )

返回服务器预写日志(WAL)目录中每个普通文件的名称、大小和上次修改时间(mtime)。不包括以点开头的文件名、目录和其他特殊文件。

此功能仅限于超级用户和`pg_监视器`默认情况下为角色,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_ls_存档_状态目录` () → `一套记录` ( *`名称`* `文本`, *`大小`* `比基特`, *`修改`* `带时区的时间戳` )

返回服务器WAL存档状态目录中每个普通文件的名称、大小和上次修改时间(mtime)(`pg_wal/存档_状态`).不包括以点开头的文件名、目录和其他特殊文件。

此功能仅限于超级用户和`pg_监视器`默认情况下为角色,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_ls_tmpdir` ( [ *`表空间`* `老年人` ] ) → `一套记录` ( *`名称`* `文本`, *`大小`* `比基特`, *`修改`* `带时区的时间戳` )

返回指定时间的临时文件目录中每个普通文件的名称、大小和上次修改时间(mtime)*`表空间`*如果*`表空间`*如果没有提供`pg_违约`检查表空间。不包括以点开头的文件名、目录和其他特殊文件。

此功能仅限于超级用户和`pg_监视器`默认情况下为角色,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_读取_文件` ( *`文件名`* `文本` \[, *`抵消`* `比基特`, *`长`* `比基特` [, *`想念你好吗_ `*布尔值` `]] ) → `文本`

返回文本文件的全部或部分,从给定字节开始*`抵消`*,最多回来一次*`长`*字节(如果先到达文件末尾,则会减少)。如果*`抵消`*是负数,它相对于文件的结尾。如果*`抵消`*和*`长`*如果省略,则返回整个文件。从文件中读取的字节在数据库编码中被解释为字符串;如果它们在该编码中无效,则会引发错误。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | | [](<>) `pg_读取_二进制_文件` ( *`文件名`* `文本` \[, *`抵消`* `比基特`, *`长`* `比基特` [, *`想念你好吗_ `*布尔值` `]] ) → `二进制数据`

返回文件的全部或部分。此功能与`pg_读取_文件`但它可以读取任意二进制数据,并将结果作为`二进制数据`不`文本`; 因此,不执行编码检查。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。

结合`把你从`函数,此函数可用于以指定的编码读取文本文件并转换为数据库的编码:

`
选择convert_from(pg_read_binary_file('file_in_utf8.txt'),'utf8')

` | | [](<>) `pg_统计文件` ( *`文件名`* `文本` [, *`想念你好吗_ `*布尔值` `] ) → `记录` ( *`大小`* `比基特`, *`通道`* `带时区的时间戳`, *`修改`* `带时区的时间戳`, *`改变`* `带时区的时间戳`, *`创造`* `带时区的时间戳`, *`isdir`* `布尔值` )

返回一条记录,其中包含文件大小、上次访问时间戳、上次修改时间戳、上次文件状态更改时间戳(仅限Unix平台)、文件创建时间戳(仅限Windows)以及一个指示它是否为目录的标志。

默认情况下,此函数仅限于超级用户,但其他用户可以被授予运行该函数的EXECUTE权限。 | ### 9.27.10.咨询锁功能 中显示的功能[表9.98](functions-admin.html#FUNCTIONS-ADVISORY-LOCKS-TABLE)管理顾问锁。有关正确使用这些功能的详细信息,请参阅[第13.3.5节](explicit-locking.html#ADVISORY-LOCKS). 所有这些函数都用于锁定应用程序定义的资源,这些资源可以通过单个64位键值或两个32位键值来标识(请注意,这两个键空间不重叠)。如果另一个会话已在同一资源标识符上持有冲突锁,则函数将等待资源可用,或返回`错误的`结果,视功能而定。锁可以是共享的,也可以是独占的:共享锁与同一资源上的其他共享锁不冲突,只与独占锁冲突。锁可以在会话级别(以便在释放或会话结束前保持)或事务级别(以便在当前事务结束前保持;不提供手动释放)。多个会话级锁定请求堆栈,因此,如果同一资源标识符被锁定三次,则必须有三个解锁请求,以便在会话结束之前释放资源。 **表9.98。咨询锁功能** | 作用

描述 | | -------------- | | [](<>) `pg_顾问_锁` ( *`钥匙`* `比基特` ) → `无效的`

`pg_顾问_锁` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `无效的`

获取独占会话级别的建议锁,必要时等待。 | | [](<>) `pg_咨询_锁定_共享` ( *`钥匙`* `比基特` ) → `无效的`

`pg_咨询_锁定_共享` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `无效的`

获取共享会话级别的建议锁,必要时等待。 | | [](<>) `pg_咨询_解锁` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_咨询_解锁` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

释放以前获得的独占会话级别建议锁。退换商品`符合事实的`如果锁成功释放。如果锁没有锁上,`错误的`返回,此外,服务器将报告SQL警告。 | | [](<>) `pg_咨询_解锁_所有` () → `无效的`

释放当前会话持有的所有会话级建议锁。(此函数在会话结束时隐式调用,即使客户端不正常地断开连接。) | | [](<>) `pg_咨询_解锁_共享` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_咨询_解锁_共享` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

释放以前获取的共享会话级别建议锁。退换商品`符合事实的`如果锁成功释放。如果锁没有锁上,`错误的`返回,此外,服务器将报告SQL警告。 | | [](<>) `pg_咨询_xact_锁` ( *`钥匙`* `比基特` ) → `无效的`

`pg_咨询_xact_锁` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `无效的`

获取独占事务级别的建议锁,必要时等待。 | | [](<>) `pg_咨询_xact_lock_共享` ( *`钥匙`* `比基特` ) → `无效的`

`pg_咨询_xact_lock_共享` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `无效的`

获取共享事务级建议锁,必要时等待。 | | [](<>) `pg_try_顾问_lock` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_try_顾问_lock` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

获得独占会话级别的建议锁(如果可用)。这将立即获得锁并返回`符合事实的`,或返回`错误的`如果无法立即获取锁,则无需等待。 | | [](<>) `pg_try_咨询_lock_共享` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_try_咨询_lock_共享` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

获取共享会话级别的建议锁(如果可用)。这将立即获得锁并返回`符合事实的`,或返回`错误的`如果无法立即获取锁,则无需等待。 | | [](<>) `pg_try_咨询_xact_lock` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_try_咨询_xact_lock` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

获得独占事务级别的建议锁(如果可用)。这将立即获得锁并返回`符合事实的`,或返回`错误的`如果无法立即获取锁,则无需等待。 | | [](<>) `pg_try_咨询_xact_lock_共享` ( *`钥匙`* `比基特` ) → `布尔值`

`pg_try_咨询_xact_lock_共享` ( *`关键1`* `整数`, *`关键2`* `整数` ) → `布尔值`

获取共享事务级别的建议锁(如果可用)。这将立即获得锁并返回`符合事实的`,或返回`错误的`如果无法立即获取锁,则无需等待。 |