系统信息函数
Redrock Postgres 提供了多个可以获取会话和系统信息的函数。
表 1 中展示的函数以一种可导出的形式提供了服务器事务信息。这些函数的主要用途是判断在两个快照之间哪些事务被提交。
表 1. 事务ID和快照信息功能
函数 | 描述 |
---|---|
pg_current_xact_id () → xid | 返回当前事务的标识号。如果当前事务还没有一个标识号(因为它还没有执行任何数据库更新),它将分配一个新的事务标识号。 |
pg_current_xact_id_if_assigned () → xid | 返回当前事务的标识号,如果还没有分配标识号则返回NULL 。 (如果事务可能是只读的,最好使用这种变体,以避免不必要地消耗事务标识号。) |
pg_xact_status ( xid ) → text | 报告最近的事务的提交状态。如果事务为最近的,系统会保留事务的提交状态,则结果是 in progress 、committed 或aborted 。 如果该事务的时间足够久,并且系统中没有对该事务的引用,而且提交状态信息已经被丢弃,则结果为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 |
是否需要记录备份结束日志? |