↑↓ 选择 ↵ 打开 ⌫ 改范围 完整检索页

pgsql.cc 提供对 postgresql.org 官网内容的中文翻译,由 Pigsty 团队维护。

受支持版本: 当前版本 (18) / 17 / 16 / 15 / 14
测试与开发版本: 19 / devel
不受支持的版本: 13 / 12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0
历史版本PostgreSQL 8.1 已于 2010 年 11 月结束社区维护,本页译文保留供仍在使用旧版本的读者参考。新系统请看当前版本。

9.20. 系统管理函数 #

表 9.44展示了那些可以用于查询以及修改运行时配置参数的函数。

表 9.44. 配置设定函数

Name Return Type 描述
current_setting(setting_name) text 获取设置的当前值
set_config(setting_name, new_value, is_local) text 设置参数并返回新值

函数current_setting返回设置setting_name的当前值。它对应于SQL命令SHOW。例如:

SELECT current_setting('datestyle');

 current_setting
-----------------
 ISO, MDY
(1 row)

set_config将参数setting_name设置为new_value。如果is_local为true,新值仅适用于当前事务。如果要让新值适用于当前会话,请改用false。该函数对应于 SQL 命令SET。例如:

SELECT set_config('log_statement_stats', 'off', false);

 set_config
------------
 off
(1 row)

表 9.45中展示的函数向其他服务器进程发送控制信号。这些函数仅限超级用户使用。

表 9.45. 服务器信号函数

Name Return Type 描述
pg_cancel_backend(pid int) boolean 取消后端的当前查询
pg_reload_conf() boolean 使服务器进程重新加载配置文件
pg_rotate_logfile() boolean 轮转服务器日志文件

这些函数在成功时都返回 true,否则返回 false。

pg_cancel_backend向由进程 ID 标识的后端进程发送一个查询取消(SIGINT)信号。活动后端的进程 ID 可以从pg_stat_activity视图的procpid列中找到,或者通过用ps列出服务器上的postgres进程得到。

pg_reload_conf 向postmaster发送 SIGHUP 信号,使所有服务器进程重新加载配置文件。

pg_rotate_logfile 向日志文件管理器发送信号,使其立即切换到新的输出文件。只有使用redirect_stderr进行日志记录时才有效,否则不存在日志文件管理器子进程。

表 9.46中列出的函数有助于进行在线备份。这些函数仅限超级用户使用。

表 9.46. 备份控制函数

Name Return Type 描述
pg_start_backup(label text) text 准备执行在线备份
pg_stop_backup() text 结束在线备份

pg_start_backup接受单个参数,它是一个任意的用户自定义备份标签。(通常是备份转储文件将要保存的名称。)该函数把一个备份标签文件写入数据库集簇的数据目录,然后以文本形式返回备份的起始 WAL 偏移。(用户不必关注这个结果值,但提供它只是以防它有用。)

pg_stop_backup 删除 pg_start_backup 创建的标签文件,并在 WAL 归档区域创建一个备份历史文件。历史文件包括传给 pg_start_backup 的标签、备份的起止 WAL 偏移以及备份的起止时间。返回值是备份的结束 WAL 偏移(同样可以忽略)。

有关正确使用这些函数的详细信息,参见第 23.3 节。

表 9.47中的函数计算数据库对象的磁盘空间用量。

表 9.47. 数据库对象尺寸函数

Name Return Type 描述
pg_column_size(any) int 存储某个值所使用的字节数(可能已压缩)
pg_tablespace_size(oid) bigint 指定 OID 的表空间占用的磁盘空间
pg_tablespace_size(name) bigint 指定名称的表空间占用的磁盘空间
pg_database_size(oid) bigint 指定 OID 的数据库占用的磁盘空间
pg_database_size(name) bigint 指定名称的数据库占用的磁盘空间
pg_relation_size(oid) bigint 指定 OID 的表或索引占用的磁盘空间
pg_relation_size(text) bigint 指定名称的表或索引占用的磁盘空间。表名可以用模式名限定
pg_total_relation_size(oid) bigint 指定 OID 的表占用的磁盘空间总量,包括索引和 TOAST 数据
pg_total_relation_size(text) bigint 指定名称的表占用的磁盘空间总量,包括索引和 TOAST 数据。表名可以用模式名限定
pg_size_pretty(bigint) text 将以 64 位整数表示的字节大小转换为带有大小单位的人类可读格式

pg_column_size 显示存储任意单个数据值所用的空间。

pg_total_relation_size接受表或 TOAST 表的 OID 或名称,返回数据及所有关联索引和 TOAST 表的字节大小。

pg_tablespace_size和pg_database_size接受表空间或数据库的 OID 或名称,并返回其中占用的磁盘总空间。

pg_relation_size接受表、索引或 TOAST 表的 OID 或名称,并以字节为单位返回大小。

pg_size_pretty 可以将其他函数的结果格式化为便于阅读的形式,适当地使用 kB、MB、GB 或 TB 单位。

表 9.48中展示的函数提供对数据库服务器所在机器上文件的本地访问。只能访问数据库集簇目录和log_directory中的文件。集簇目录中的文件使用相对路径,日志文件使用与log_directory配置设置相匹配的路径。这些函数仅限超级用户使用。

表 9.48. 通用文件访问函数

Name Return Type 描述
pg_ls_dir(dirname text) setof text 列出目录内容。
pg_read_file(filename text, offset bigint, length bigint) text 返回文本文件的内容。
pg_stat_file(filename text) record 返回文件信息。

pg_ls_dir 返回指定目录中的所有名称,但不包括特殊项“.”和“..”。

pg_read_file从给定的offset开始返回文本文件的一部分,最多返回length字节(如果先到达文件末尾,则返回更少的字节)。如果offset为负,则它相对于文件末尾。

pg_stat_file返回一条记录,包含文件大小、最后访问时间戳、最后修改时间戳、最后文件状态更改时间戳(仅限 Unix 平台)、文件创建时间戳(仅限 Windows),以及一个boolean值,表示它是否是目录。典型用法包括:

SELECT * FROM pg_stat_file('filename');
SELECT (pg_stat_file('filename')).modification;

提交更正

译文有误、术语不当或页面显示问题,请到译文仓库 pgsty/pgdoc 报告译文问题。 英文原文本身的问题,请在当前版本的对应页面向上游反馈;上游不再修订已结束维护的版本。