# 9.27.系统管理功能
本节介绍的功能用于控制和监视PostgreSQL安装。
# 9.27.1.配置设置功能
表9.85显示可用于查询和更改运行时配置参数的函数。
表9.85.配置设置功能
作用 描述 例子 |
---|
当前_设置 (设置你的名字 文本 [,想念你好吗*_布尔值 * ]) → 文本<br/><br/>返回设置的当前值* 设置你的名字*.如果没有这样的设置, 当前_设置抛出错误,除非* 想念你好吗*是供应的,也是 符合事实的(在这种情况下,返回NULL)。此函数对应于SQL命令[显示](sql-show.html).<br/><br/> 当前_设置('datestyle')→ ISO,MDY` |
设置配置 ( 设置你的名字 文本 , 新价值 文本 , 你是本地人吗 布尔值 ) → 文本 设置参数* 设置你的名字 到新价值 ,并返回该值。如果你是本地人吗 *是符合事实的 ,新值仅在当前交易期间适用。如果希望新值应用于当前会话的其余部分,请使用错误的 相反此函数对应于SQL命令设置.set_config('log_statement_stats','off',false) → 关 |
# 9.27.2.服务器信令功能
中显示的功能表9.86向其他服务器进程发送控制信号。默认情况下,这些功能的使用仅限于超级用户,但使用这些功能的其他人可能会被授予访问权限授予
,但有明显的例外。
每个函数都返回符合事实的
如果成功发送了信号错误的
如果发送信号失败。
表9.86.服务器信令功能
作用 描述 |
---|
pg_取消后端 ( pid 整数 ) → 布尔值 取消对其后端进程具有指定进程ID的会话的当前查询。如果调用角色是其后端正在被取消的角色的成员,或者调用角色已被授予,则也允许这样做 pg_信号_后端 但是,只有超级用户可以取消超级用户后端。 |
pg_日志_后端_内存_上下文 ( pid 整数 ) → 布尔值 请求使用指定的进程ID记录后端的内存上下文。这些内存上下文将在 日志 消息级别。它们将根据日志配置集出现在服务器日志中(请参阅第20.8节获取更多信息),但无论客户_闵_信息。只有超级用户才能请求记录内存上下文。 |
pg_重新加载_形态 () → 布尔值 使PostgreSQL server的所有进程重新加载其配置文件。(这是通过向postmaster进程发送SIGHUP信号来启动的,postmaster进程将SIGHUP发送给其每个子进程。)你可以使用 pg_文件_设置 和pg_hba_文件_规则 视图,以在重新加载之前检查配置文件是否存在可能的错误。 |
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<br/><br/> Description |
|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| []() `pg_create_restore_point` ( *`name`* `text` ) → `pg_lsn`<br/><br/> 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.<br/><br/> 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`<br/><br/> Returns the current write-ahead log flush location (see notes below). |
| []() `pg_current_wal_insert_lsn` () → `pg_lsn`<br/><br/> Returns the current write-ahead log insert location (see notes below). |
| []() `pg_current_wal_lsn` () → `pg_lsn`<br/><br/> Returns the current write-ahead log write location (see notes below). |
| []() `pg_start_backup` ( *`label`* `text` [, *`fast`* `boolean` [, *`exclusive`* `boolean` ]] ) → `pg_lsn`<br/><br/> 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).<br/><br/> 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.<br/><br/> 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` )<br/><br/> 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).<br/><br/> 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.)<br/><br/> 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.<br/><br/> 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.<br/><br/> This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function.|
| `pg_stop_backup` () → `pg_lsn`<br/><br/> 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.<br/><br/> This function is restricted to superusers by default, but other users can be granted EXECUTE to run the function. |
| []() `pg_is_in_backup` () → `boolean`<br/><br/> Returns true if an on-line exclusive backup is in progress. |
| []() `pg_backup_start_time` () → `timestamp with time zone`<br/><br/> Returns the start time of the current on-line exclusive backup if one is in progress, otherwise `NULL`. |
| []() `pg_switch_wal` () → `pg_lsn`<br/><br/> 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.<br/><br/> 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`<br/><br/> 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` )<br/><br/> 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`<br/><br/> 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提供有关备用服务器当前状态的信息。这些功能可以在恢复和正常运行期间执行。
表9.88.恢复信息功能
中显示的功能表9.89控制恢复的进程。这些功能只能在恢复期间执行。
表9.89.恢复控制功能
pg_wal_replay_暂停
和pg_wal_replay_resume
升级正在进行时无法执行。如果在恢复暂停时触发升级,暂停状态将结束,升级将继续。
如果流式复制被禁用,暂停状态可能会无限期地继续,而不会出现问题。如果正在进行流式复制,则将继续接收WAL记录,这将最终填满可用磁盘空间,具体取决于暂停的持续时间、WAL生成的速率和可用磁盘空间。
# 9.27.5.快照同步功能
PostgreSQL允许数据库会话同步快照。A.快照确定哪些数据对使用快照的事务可见。当两个或多个会话需要查看数据库中相同的内容时,需要同步快照。如果两个会话只是独立地启动它们的事务,那么在两个会话的执行之间总是有可能提交第三个事务开始交易
命令,以便一个会话看到该事务的效果,而另一个会话看不到。
为了解决这个问题,PostgreSQL允许事务出口它正在使用的快照。只要出口交易保持打开状态,其他交易就可以继续进口它的快照,从而保证它们看到的数据库视图与第一个事务看到的完全相同。但请注意,这些事务中的任何一个所做的任何数据库更改对其他事务都是不可见的,这与未提交的事务所做的更改一样。因此,事务是相对于预先存在的数据进行同步的,但对于它们自己所做的更改,事务会正常运行。
快照将与pg_导出_快照
函数,如中所示表9.90,并随设置事务命令
表9.90.快照同步功能
作用 描述 |
---|
pg_导出_快照 () → 文本 保存事务的当前快照并返回 文本 标识快照的字符串。必须将此字符串(在数据库之外)传递给希望导入快照的客户端。只有在导出快照的事务结束之前,快照才可用于导入。如果需要,事务可以导出多个快照。请注意,这样做只在以下情况下有用: 阅读承诺 交易,从年开始可重复读取 在更高的隔离级别下,事务在其整个生命周期中使用相同的快照。一旦事务导出了任何快照,就无法使用准备交易. |
# 9.27.6.复制管理功能
中显示的功能表9.91用于控制复制功能并与之交互。看见第27.2.5节, 第27.2.6节和第50章有关基本功能的信息。默认情况下,仅允许超级用户使用复制源的函数,但通过使用授予
命令复制插槽的功能仅限于超级用户和具有复制
特权
其中许多函数在复制协议中具有等效的命令;看见第53.4节.
中描述的功能第9.27.3节, 第9.27.4节和第9.27.5节也与复制相关。
表9.91.复制管理功能
作用 描述 |
---|
pg_创建_物理_复制_插槽 ( 插槽名称 名称 [, 立即保留_ 布尔值 ,短暂的 布尔值 ] ) → 记录 ( 插槽名称 名称 , lsn pg_lsn )创建名为的新物理复制插槽 插槽名称 .可选的第二个参数,当符合事实的 ,指定立即保留此复制插槽的LSN;否则,LSN将在流复制客户端的第一次连接时保留。只有使用流式复制协议才能从物理插槽进行流式更改-请参阅第53.4节.可选的第三个参数,短暂的 ,当设置为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计算数据库对象的磁盘空间使用情况,或帮助演示或理解使用结果。比基特
结果以字节为单位。如果将不代表现有对象的OID传递给其中一个函数,无效的
被退回。
表9.92.数据库对象大小函数
作用 描述 |
---|
pg_柱尺寸 (“任何” ) →整数 显示用于存储任何单个数据值的字节数。如果直接应用于表列值,这将反映所做的任何压缩。 |
pg_列_压缩 (“任何” ) → 文本 显示了用于压缩单个可变长度值的压缩算法。退换商品 无效的 如果未压缩该值。 |
pg_数据库_大小 ( 名称 ) → 比基特 pg_数据库_大小 ( 老年人 ) → 比基特 计算具有指定名称或OID的数据库使用的总磁盘空间。要使用此功能,您必须 连接 在指定数据库上的权限(默认情况下是授予的)或成为pg_读取所有数据 角色 |
pg_索引_大小 ( regclass ) → 比基特 计算附加到指定表的索引使用的总磁盘空间。 |
pg_关系_尺寸 ( 关系 regclass [, 叉 文本 ] ) → 比基特 计算指定关系的一个“fork”使用的磁盘空间。(请注意,在大多数情况下,使用更高级的功能更方便。) pg_总尺寸_关系_尺寸 或pg_表_尺寸 ,将所有叉子的大小相加。)对于一个参数,它返回关系的主数据分支的大小。可以提供第二个参数来指定要检查的分叉:* 主要的 返回关系的主数据分支的大小。* fsm 返回可用空间贴图的大小(请参见第70.3节)与这种关系有关。* 虚拟机 返回可见性贴图的大小(请参见第70.4节)与这种关系有关。* 初始化 返回与关系关联的初始化叉的大小(如果有)。 |
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节详细信息。
中显示的功能表9.93帮助识别与数据库对象关联的特定磁盘文件。
表9.93.数据库对象定位函数
作用 描述 |
---|
pg_关系_文件节点 ( 关系 regclass ) → 老年人 返回当前分配给指定关系的“filenode”编号。filenode是用于关系的文件名的基本组件(请参见第70.1节更多信息)。对于大多数关系,结果与 pg_类 .重新文件节点 ,但对于某些系统目录重新文件节点 为零,必须使用此函数才能获得正确的值。如果传递了一个没有存储的关系(如视图),则函数返回NULL。 |
pg_关系_文件路径 ( 关系 regclass ) → 文本 返回整个文件路径名(相对于数据库群集的数据目录, PGDATA )关系的一部分。 |
pg_文件节点_关系 ( 表空间 老年人 , 文件节点 老年人 ) → regclass 根据存储关系的表空间OID和文件节点返回关系的OID。这本质上是 pg_关系_文件路径 。对于数据库默认表空间中的关系,表空间可以指定为零。退换商品无效的 如果当前数据库中没有与给定值关联的关系。 |
表9.94列出用于管理排序规则的函数。
表9.94.整理管理功能
作用 描述 |
---|
pg_校对_实际_版本 ( 老年人 ) → 文本 返回当前安装在操作系统中的排序规则对象的实际版本。如果这与中的值不同 pg_校勘 .collversion ,则可能需要重建依赖于排序规则的对象。另见更改排序规则. |
pg_导入_系统_排序 ( 模式 regnamespace ) → 整数 将排序规则添加到系统目录中 pg_校勘 基于它在操作系统中找到的所有区域设置。这是什么initdb 使用;看见第24.2.2节更多细节。如果以后在操作系统中安装了其他区域设置,则可以再次运行此函数以添加新区域设置的排序规则。与中现有条目匹配的区域设置pg_校勘 将被跳过。(但此函数不会删除基于操作系统中不再存在的区域设置的排序规则对象。)这个*模式 *参数通常是pg_目录 ,但这不是一项要求;排序规则也可以安装到其他一些模式中。函数返回它创建的新排序规则对象的数量。此功能仅限超级用户使用。 |
表9.95列出提供分区表结构信息的函数。
表9.95.划分信息函数
例如,检查分区表中包含的数据的总大小测量
,可以使用以下查询:
SELECT pg_size_pretty(sum(pg_relation_size(relid))) AS total_size
FROM pg_partition_tree('measurement');
# 9.27.8.索引维护功能
表9.96显示可用于索引维护任务的功能。(请注意,这些维护任务通常由autovacuum自动完成;只有在特殊情况下才需要使用这些功能。)恢复期间无法执行这些功能。这些函数的使用仅限于超级用户和给定索引的所有者。
表9.96.索引维护功能
作用 描述 |
---|
总结新的价值观 ( 指数 regclass ) → 整数 扫描指定的BRIN索引,在基表中查找当前未由索引汇总的页面范围;对于任何这样的范围,它都会通过扫描这些表页来创建一个新的摘要索引元组。返回插入到索引中的新页面范围摘要的数量。 |
布林努山脉 ( 指数 regclass , 区块号 比基特 ) → 整数 汇总覆盖给定块的页面范围(如果尚未汇总)。这就像 总结新的价值观 但它只处理覆盖给定表块号的页面范围。 |
布林_去总结_山脉 ( 指数 regclass , 区块号 比基特 ) → 无效的 删除BRIN索引元组,该元组汇总覆盖给定表块的页面范围(如果有)。 |
杜松子酒清洁待处理清单 ( 指数 regclass ) → 比基特 通过将指定GIN索引的“待定”列表中的条目批量移动到主GIN数据结构,来清理该列表。返回从挂起列表中删除的页数。如果参数是用 快速更新 选项禁用时,不会进行清理,结果为零,因为索引没有挂起列表。看见第67.4.1节和第67.5节有关待处理列表的详细信息,以及快速更新 选项 |
# 9.27.9.通用文件访问功能
中显示的功能表9.97提供对托管服务器的计算机上的文件的本机访问。仅数据库群集目录中的文件和日志目录
可以访问,除非该用户是超级用户或被授予该角色pg_读取_服务器_文件
.使用群集目录中文件的相对路径,以及与日志目录
日志文件的配置设置。
请注意,向用户授予pg_读取_文件()
,或相关函数,使它们能够读取服务器上数据库服务器进程可以读取的任何文件;这些函数绕过所有数据库内权限检查。这意味着,例如,具有这种访问权限的用户能够读取pg_authid
存储身份验证信息的表,以及读取数据库中的任何表数据。因此,应仔细考虑是否允许访问这些功能。
其中一些函数采用可选的*想念你好吗
*参数,指定文件或目录不存在时的行为。如果符合事实的
,函数返回无效的
或空结果集(视情况而定)。如果错误的
,将引发一个错误。默认值是错误的
.
表9.97.通用文件访问功能
# 9.27.10.咨询锁功能
中显示的功能表9.98管理顾问锁。有关正确使用这些功能的详细信息,请参阅第13.3.5节.
所有这些函数都用于锁定应用程序定义的资源,这些资源可以通过单个64位键值或两个32位键值来标识(请注意,这两个键空间不重叠)。如果另一个会话已在同一资源标识符上持有冲突锁,则函数将等待资源可用,或返回错误的
结果,视功能而定。锁可以是共享的,也可以是独占的:共享锁与同一资源上的其他共享锁不冲突,只与独占锁冲突。锁可以在会话级别(以便在释放或会话结束前保持)或事务级别(以便在当前事务结束前保持;不提供手动释放)。多个会话级锁定请求堆栈,因此,如果同一资源标识符被锁定三次,则必须有三个解锁请求,以便在会话结束之前释放资源。
表9.98.咨询锁功能