三月 15, 2024
摘要:报告的该部分包含了,PostgreSQL 中的一些服务器级别的统计信息。
目录
数据库统计信息
基于 pg_stat_database 视图,包含的报告时间范围内每个数据库的统计信息。
- Database - 数据库名称
- Transactions - 数据库事务统计信息
- Commits - 已提交的事务数(xact_commit)
- Rollbacks - 回滚过的事务数(xact_rollback)
- Deadlocks - 检测到的死锁数(deadlocks)
- Checksums - 校验和失败数(如果有)
- Failures - 检测到的数据块校验和失败数
- Last - 最近一次检测到的校验和失败
- Block statistics - 数据库块读取和命中统计信息
- Hit(%) - 缓冲区缓存命中率
- Read - 在此数据库中读取的磁盘块数(blks_read)
- Hit - 发现磁盘块已在缓冲区缓存中的次数(blks_hit)
- Block I/O times - 在数据块 I/O 上花费的时间
- Read - 后端读取数据文件块所花费的时间,以秒为单位
- Write - 后端写入数据文件块所花费的时间,以秒为单位
- Tuples - 元组统计部分
- Ret - 返回的元组数(tup_returned)
- Fet - 提取的元组数(tup_fetched)
- Ins - 插入的元组数(tup_inserted)
- Upd - 更新的元组数(tup_updated)
- Del - 删除的元组数(tup_deleted)
- Temp files - 临时文件统计信息
- Size - 在此数据库中,查询写入到临时文件的总数据量(temp_bytes)
- Files - 在此数据库中,查询创建的临时文件数(temp_files)
- Size - 报告时间段结束时的数据库大小(pg_database_size())
- Growth - 报告时间段内的数据库增长量(pg_database_size() 差异)
实例 I/O 统计信息
按对象类型、后端类型和上下文划分的 I/O 统计信息。基于 pg_stat_io,在 PostgreSQL 16 及以上版本中可用。
- Object - I/O 操作的目标对象类型
- Backend - 执行 I/O 操作的后端类型
- Context - I/O 操作的上下文
- Reads - 读取统计信息
- Count - 读取操作数
- Bytes - 读取数据量
- Time - 读取操作所花费的时间(以秒为单位)
- Writes - 写入统计信息
- Count - 写入操作数
- Bytes - 写入数据量
- Time - 写入操作所花费的时间(以秒为单位)
- Writebacks - 写出到持久化存储的请求
- Count - 进程请求内核写出到持久化存储的数据块数
- Bytes - 请求写出到持久化存储的数据量
- Time - 写回操作所花费的时间(秒)
- Extends - 关系扩展操作
- Count - 关系扩展操作的次数
- Bytes - 扩展操作使用的空间量
- Time - 扩展操作所花费的时间(以秒为单位)
- Hits - 发现所需数据块已在共享缓冲区中的次数
- Evictions - 从共享或本地缓冲区中写出块,以使其可用于其他块的次数
- Reuses - 在批量读取、批量写入或 vacuum 上下文中,在共享缓冲区外的一个大小受限的缓冲环中,一个现有缓冲页由 I/O 操作重用的次数
- Fsyncs - fsync 操作
- Count - fsync 调用的次数。这些仅在正常上下文中跟踪
- Time - fsync 操作所花费的时间(秒)
实例 SLRU 统计信息
SLRU 缓存的访问统计信息(基于 pg_stat_slru 视图)
- Name - SLRU 的名称
- Zeroed - 初始化期间清零的数据块数
- Hits - 发现磁盘块已在 SLRU 中,因而不需要读取的次数(这仅包括 SLRU 中的命中,不包括操作系统的文件系统缓存)
- Reads - 读取到 SLRU 中的磁盘块数
- %Hit - 此 SLRU 的磁盘块命中率,以读取数 + 命中数的百分比表示
- Writes - 从 SLRU 写出的磁盘块数
- Checked - 检查数据块在 SLRU 中是否存在的次数(blks_exists 字段)
- Flushes - 此 SLRU 的脏数据刷写次数
- Truncates - 此 SLRU 的截断次数
按数据库划分的会话统计信息
此部分包含 pg_stat_database 视图中的会话相关数据。自 PostgreSQL 14 起可用。
- Database - 数据库名称
- Timings (s) - 会话计时,以秒为单位
- Total - 在此数据库中,数据库会话所花费的时间(请注意,统计信息仅在会话状态变化时更新,因此,如果会话长时间处于空闲状态,则不会包括此空闲时间)(session_time)
- Active - 在此数据库中,执行 SQL 语句所花费的时间(这对应于 pg_stat_activity 中的状态值:
active
和fastpath function call
)(active_time) - Idle(T) - 在此数据库中,处于空闲事务状态持续的时间(这对应于 pg_stat_activity 中的状态值:
idle in transaction
和idle in transaction (aborted)
)(idle_in_transaction_time)
- Sessions - 数据库的会话计数
- Established - 已建立到此数据库的会话总数(sessions)
- Abandoned - 由于与客户端的连接丢失,而终止的与此数据库的会话数(sessions_abandoned)
- Fatal - 因发生严重错误,而终止的与此数据库的会话数(sessions_fatal)
- Killed - 由管理员干预,而终止的与此数据库的会话数(sessions_killed)
按数据库划分的语句统计信息
包含 pg_stat_statements 数据中按每个数据库聚合的总统计信息(如果 pg_stat_statements 扩展在报告时间段内可用)
- Database - 数据库名称
- Calls - 所有语句执行的总次数(calls 的总和)
- Time (s) - 花费的时间,以秒为单位
- Plan - 规划花费的时间(total_plan_time 的总和) - 自 pg_stat_statements 1.8 起可用
- Exec - 执行花费的时间(total_time 或 total_exec_time 的总和)
- Read - 读取块花费的时间(blk_read_time 的总和)
- Write - 写入块花费的时间(blk_write_time 的总和)
- Trg - 执行触发器函数花费的时间
- Temp I/O Time - 在临时文件块 I/O 上花费的时间
- Read - 读取临时文件块花费的时间(以秒为单位)
- Write - 写入临时文件块花费的时间(以秒为单位)
- Fetched (blk) - 从磁盘和缓冲区中获取的总块数
- Shared - 获取的共享块总数(shared_blks_read + shared_blks_hit 的总和)
- Local - 获取的本地块总数(local_blks_read + local_blks_hit 的总和)
- Dirtied (blk) - 数据库中写脏的总块数
- Shared - 数据库中写脏的共享块总数(shared_blks_dirtied 的总和)
- Local - 数据库中写脏的本地块总数(local_blks_dirtied 的总和)
- Temp (blk) - 用于操作(如连接和排序)的块
- Read - 读取的块数(temp_blks_read 的总和)
- Write - 写入的块数(temp_blks_written 的总和)
- Local (blk) - 用于临时表的块
- Read - 读取的块数(local_blks_read 的总和)
- Write - 写入的块数(local_blks_written 的总和)
- Statements - 捕获的语句总数
- WAL size - 语句生成的 WAL 总量(wal_bytes 的总和)
按数据库划分的 JIT 统计信息
包含每个数据库中总的 JIT 相关统计信息,由 pg_stat_statements 扩展提供。从 PostgreSQL 15(pg_stat_statements 1.10)开始可用。
- Database - 数据库名称
- Calls - 所有语句执行的总次数(calls 的总和)
- Time (s) - 花费的时间,以秒为单位
- Plan - 规划花费的时间(total_plan_time 的总和) - 自 pg_stat_statements 1.8 起可用
- Exec - 执行花费的时间(total_time 或 total_exec_time 的总和)
- Generation
- Count - 由语句 JIT 编译的函数总数
- Gen. time - 语句在生成 JIT 代码上花费的总时间
- Inlining
- Count - 函数内联的次数
- Time - 语句在内联函数上花费的总时间(以秒为单位)
- Optimization
- Count - 语句被优化的次数
- Time - 语句在优化上花费的总时间(以秒为单位)
- Emission
- Count - 代码被发放的次数
- Time - 语句在发放代码上花费的总时间(以秒为单位)
实例统计信息
此表包含 pg_stat_bgwriter 视图中的数据
- Scheduled checkpoints - 由 checkpoint_timeout 参数设置,调度完成的检查点总数(checkpoints_timed字段)
- Requested checkpoints - 由 max_wal_size、archive_timeout 参数设置,和 CHECKPOINT 命令,触发的检查点总数(checkpoints_req 字段)
- Checkpoint write time (s) - 检查点写块操作花费的总时间,以秒为单位(checkpoint_write_time 字段)
- Checkpoint sync time (s) - 检查点同步操作花费的总时间,以秒为单位(checkpoint_sync_time 字段)
- Checkpoints buffers written - 由检查点写入的缓冲页总数(buffers_checkpoint 字段)
- Background buffers written - 由后台写进程写入的缓冲页总数(buffers_clean 字段)
- Backend buffers written - 后端进程写入的缓冲页总数(buffers_backend 字段)
- Backend fsync count - 后端进程调用 fsync 的总次数(buffers_backend_fsync 字段)
- Bgwriter interrupts (too many buffers) - 由于达到 bgwriter_lru_maxpages 参数的值,而触发的后台写进程中断总次数。
- Number of buffers allocated - 分配的缓冲页总数(buffers_alloc 字段)
- WAL generated - 生成的 WAL 总量(基于 pg_current_wal_lsn() 差值)
- Start LSN - 在当前报告开始时的 WAL LSN
- End LSN - 在当前报告结束时的 WAL LSN
- WAL segments archived - 已归档的 WAL 段数量(基于 pg_stat_archiver 视图的 archived_count 字段)
- WAL segments archive failed - WAL 段归档失败次数(基于 pg_stat_archiver 视图的 failed_count 字段)
WAL 统计信息
此表包含 pg_stat_wal 视图中的数据。自 PostgreSQL 14 起可用。
- WAL generated - 生成的 WAL 总量(wal_bytes)
- WAL per second - 每秒平均生成的 WAL 量
- WAL records - 生成的 WAL 记录总数(wal_records)
- WAL FPI - 生成的 WAL 全页镜像总数(wal_fpi)
- WAL buffers full - 由于 WAL 缓冲区已满,而将 WAL 数据写入磁盘的次数(wal_buffers_full)
- WAL writes - 通过 XLogWrite 请求,将 WAL 缓冲页写出到磁盘的次数(wal_write)
- WAL writes per second - 每秒通过 XLogWrite 请求将 WAL 缓冲页写出到磁盘的平均次数
- WAL sync - 通过 issue_xlog_fsync 请求将 WAL 文件同步到磁盘的次数(需要 fsync 处于打开状态,并且 wal_sync_method 设为 fdatasync、fsync 或 fsync_writethrough,否则为零)(wal_sync)
- WAL syncs per second - 每秒通过 issue_xlog_fsync 请求将 WAL 文件同步到磁盘的平均次数
- WAL write time (s) - 通过 XLogWrite 请求将 WAL 缓冲区写入磁盘所花费的总时间,以秒为单位(需要启用 track_wal_io_timing,否则为零)。这包括了在 wal_sync_method 设为 open_datasync 或 open_sync 时的同步时间。(wal_write_time)
- WAL write duty - WAL 写入时间占报告持续时间的百分比
- WAL sync time (s) - 通过 issue_xlog_fsync 请求将 WAL 文件同步到磁盘所花费的总时间,以秒为单位(需要启用 track_wal_io_timing,fsync 处于打开状态,并且 wal_sync_method 设为 fdatasync、fsync 或 fsync_writethrough,否则为零)(wal_sync_time)
- WAL sync duty - WAL 同步时间占报告持续时间的百分比
表空间统计信息
此表包含有关表空间大小和增长的信息:
- Tablespace - 表空间名称
- Path - 表空间路径
- Size - 报告时间段内最后一个样本中的表空间大小
- Growth - 报告时间段内的表空间增长
等待采样
本部分包含了从 pg_wait_sampling 扩展获取的数据(需要该扩展在报告时间段内可用)。
等待事件类型
此表提供报告时间段内有关每种类型的事件的总等待时间的信息。事件相关的等待统计信息,由 pg_wait_sampling 扩展在语句执行期间和其他等待时(包括后台活动)检测提供。
- Wait event type - 等待事件的类型(请参阅 pg_stat_activity)
- Statements Waited (s) - 语句在此类型的事件上等待的时间(当 pg_wait_sampling_profile.queryid 不为 null 时),以秒为单位
- %Total - 语句在此类型的事件上等待的时间,占语句等待的总时间的百分比
- All Waited (s) - 所有后端(包括后台活动)在此类型的事件上等待的时间量
- %Total - 后端在此类型的事件上等待的时间,占后端等待的总时间的百分比
突出的等待事件(语句)
此表包含按语句执行期间等待的总时间排列前 pg_profile.topn 的等待事件(当 pg_wait_sampling_profile.queryid_ 不为 null 时)。
- Wait event type - 等待事件的类型(请参阅 pg_stat_activity)
- Wait event - 等待事件名称(请参阅 pg_stat_activity)
- Waited (s) - 语句在事件上等待的时间量,以秒为单位
- %Total - 语句在事件上等待的时间,占语句等待的总时间的百分比
突出的等待事件(全部)
此表包含按总等待时间(包括后台活动)排列前 pg_profile.topn 的等待事件。
- Wait event type - 等待事件的类型(请参阅 pg_stat_activity)
- Wait event - 等待事件名称(请参阅 pg_stat_activity)
- Waited (s) - 所有后端在事件上等待的时间量,以秒为单位
- %Total - 所有后端在事件上等待的时间,占后端等待的总时间的百分比