PostgreSQL 中文参考文档
🌐 英文原版 官方 ↗

53.2. pg_aios #

pg_aios 视图列出当前所有使用中的 异步 I/O(Asynchronous I/O) 句柄。 I/O 句柄用于引用一个正在被准备、执行或处于完成过程中的 I/O 操作。 pg_aios 为每个 I/O 句柄包含一行。

这个视图主要对 PostgreSQL 的开发者有用, 但在调优 PostgreSQL 时也可能有用。

Table 53.2. \1 字段列说明

Column Type

Description

pid int4

正在执行此 I/O 的服务器进程的进程 ID。

io_id int4

I/O 句柄的标识符。句柄会在 I/O 完成后被复用 (或在 I/O 开始之前句柄被释放时)。复用时 pg_aios.io_generation 会递增。

io_generation int8

I/O 句柄的生成编号。

state text

I/O 句柄的状态:

  • HANDED_OUT,已被代码引用但尚未使用

  • DEFINED,执行所需的信息已经可知

  • STAGED,已就绪可执行

  • SUBMITTED,已提交执行

  • COMPLETED_IO,已完成,但结果尚未被处理

  • COMPLETED_SHARED,共享完成处理已完成

  • COMPLETED_LOCAL,后端本地完成处理已完成

operation text

使用该 I/O 句柄执行的操作:

  • invalid,尚未可知

  • readv,向量读

  • writev,向量写

off int8

I/O 操作的偏移。

length int8

I/O 操作的长度。

target text

I/O 针对的是什么类型的对象:

  • smgr,对关系的 I/O

handle_data_len int2

与 I/O 操作关联的数据的长度。 对于与 shared_buffers 和 temp_buffers 之间的 I/O, 这表示该 I/O 正在操作多少个缓冲区。

raw_result int4

I/O 操作的低层级结果,如果操作尚未完成则为 NULL。

result text

I/O 操作的高层级结果:

  • UNKNOWN 表示该操作的结果尚不可知。

  • OK 表示 I/O 成功完成。

  • PARTIAL 表示 I/O 无错误地完成,但没有处理全部 数据。通常调用者需要重试,并在单独的 I/O 中完成剩余 工作。

  • WARNING 表示 I/O 无错误地完成,但 I/O 的执行 触发了一个警告。 例如在启用 zero_damaged_pages 时遇到损坏的 缓冲区。

  • ERROR 表示 I/O 因错误而失败。

target_desc text

对 I/O 操作目标的描述。

f_sync bool

标志,指示 I/O 是否同步执行。

f_localmem bool

标志,指示 I/O 是否引用进程本地内存。

f_buffered bool

标志,指示 I/O 是否为缓冲 I/O。


pg_aios 视图是只读的。

默认情况下,只有超级用户或具有 pg_read_all_stats 角色特权的角色才能读取 pg_aios 视图。