Redrock Postgres 文档
主页 切换暗/亮/自动模式 切换暗/亮/自动模式 切换暗/亮/自动模式 返回首页

系统信息函数

Redrock Postgres 提供了多个可以获取会话和系统信息的函数。

表 1 中展示的函数以一种可导出的形式提供了服务器事务信息。这些函数的主要用途是判断在两个快照之间哪些事务被提交。

表 1. 事务ID和快照信息功能

函数 描述
pg_current_xact_id () → xid 返回当前事务的标识号。如果当前事务还没有一个标识号(因为它还没有执行任何数据库更新),它将分配一个新的事务标识号。
pg_current_xact_id_if_assigned () → xid 返回当前事务的标识号,如果还没有分配标识号则返回NULL。 (如果事务可能是只读的,最好使用这种变体,以避免不必要地消耗事务标识号。)
pg_xact_status ( xid ) → text 报告最近的事务的提交状态。如果事务为最近的,系统会保留事务的提交状态,则结果是 in progresscommittedaborted。 如果该事务的时间足够久,并且系统中没有对该事务的引用,而且提交状态信息已经被丢弃,则结果为NULL。 应用可以使用此函数,例如,确定在进行COMMIT时,应用程序和数据库服务器断开连接后,它们的事务是已提交还是中止。 注意,预备提交的事务报告为prepared的事务;如果应用需要确定一个事务ID是否属于一个预备事务,可以检查 pg_prepared_xacts
pg_current_logicaltime () → logicaltime 返回系统最新的逻辑时间戳。
pg_current_snapshot () → logicaltime 返回当前快照的逻辑时间戳。所有提交逻辑时间戳小于该logicaltime的事务要么提交且可见,要么回滚并死亡。

内部事务 ID 类型xid是由回滚段号、事务槽号、和序列号组成的。逻辑时间戳是一个按单调递增的顺序产生的整型数值。

表 2 中展示的函数提供了有关于已经提交事务的信息。这些函数主要提供有关事务何时被提交的信息。

表 2. 已提交事务信息

函数 描述
pg_xact_commit_timestamp ( xid ) → timestamp with time zone 得到一个事务的提交物理时间戳
pg_xact_commit_logicaltime ( xid ) → logicaltime 得到一个事务的提交逻辑时间戳

表 3 中所展示的函数能打印initdb期间初始化的信息,例如系统表版本。它们也能显示有关预写式日志和检查点处理的信息。这些信息是实例范围内的,不与任何特定的一个数据库相关。对于同一种来源,它们返回和 pg_controldata 大致相同的信息,不过其形式更适合于 SQL 函数。

表 3. 控制数据函数

函数 描述
pg_control_checkpoint () → record 返回有关当前检查点状态的信息,如表 4 所展示。
pg_control_system () → record 返回有关当前控制文件状态的信息,如表 5 所展示。
pg_control_init () → record 返回有关实例初始化状态的信息,如表 6 所展示。
pg_control_recovery () → record 返回有关恢复状态的信息,如表 7 所展示。

pg_control_checkpoint返回一个表 4 中所示的记录

表 4. pg_control_checkpoint

列名 数据类型 描述
checkpoint_lsn pg_lsn 最新检查点位置。
redo_lsn pg_lsn 最新检查点的重做日志位置。
redo_wal_file text 最新检查点日志所在的 WAL 文件。
timeline_id integer 最新检查点的时间线编号。
prev_timeline_id integer 最新检查点中先前的时间线编号。
full_page_writes boolean 最新检查点的 full_page_writes 参数值。
next_time logicaltime 最新检查点中的下一个逻辑时间戳。
next_oid oid 最新检查点中的下一个对象编号。
checkpoint_time timestamp with time zone 最近检查点的时间。

pg_control_system返回一个表 5 中所示的记录

表 5. pg_control_system

列名 数据类型 描述
pg_control_version integer 控制文件版本号。
catalog_version_no integer 系统表版本号。
system_identifier bigint 数据库系统标识符。
pg_control_last_modified timestamp with time zone 控制文件上次修改的时间戳。

pg_control_init返回一个表 6 中所示的记录

表 6. pg_control_init

列名 数据类型 描述
max_data_alignment integer 最大数据对齐字节数。
database_block_size integer 数据库页面块大小。
blocks_per_segment integer 数据文件中每个段的页面数。
wal_block_size integer WAL 块大小。
bytes_per_wal_segment integer 每个 WAL 段的字节数。
max_identifier_length integer 标识符的最大长度。
max_index_columns integer 索引中的最多列数。
max_toast_chunk_size integer TOAST 块的最大大小。
large_object_chunk_size integer 大对象块的大小。
float4_pass_by_value boolean 通过值还是引用传递 4 字节浮点参数?
float8_pass_by_value boolean 通过值还是引用传递 8 字节浮点参数?
data_page_checksum_version integer 数据页校验和版本。

pg_control_recovery返回一个表 7 中所示的记录

表 7. pg_control_recovery

列名 数据类型 描述
min_recovery_end_lsn pg_lsn 最小恢复结束位置。
min_recovery_end_timeline integer 最小恢复结束位置的时间线。
backup_start_lsn pg_lsn 备份开始位置。
backup_end_lsn pg_lsn 备份结束位置。
end_of_backup_record_required boolean 是否需要记录备份结束日志?