11-监视数据库活动

2025-01-19 14:15

监视数据库活动和分析性能

linux工具

# ps auxw |grep ^postgres
#/services/install/postgresql10/bin/postmaster -D /services/install/postgresql10/data
    主服务器进程。
  • 接下来的五个进程是主进程自动启动的后台工作进程

  • 五个进程: checkpointer,writer,wal writer,autovacuum launcher, stats collector

  • 其余每个进程都是处理一个客户端连接的服务器进程.

  • idle 等待客户端命令

  • idle in transaction(等待BEGIN块内的客户端)

  • waiting如果服务器进程当前正在等待另一个会话持有的锁,则附加

stats collector

  • 支持收集和报告有关服务器活动的信息

  • 配置: 在postgresql.conf文件中配置。

  • 参数track_activities 可以监视任何服务器进程正在执行的当前命令。

  • 参数track_counts 控制是否收集有关表和索引访问的统计信息.

  • 参数track_functions 可以跟踪用户定义函数的使用情况

  • 参数track_io_timing 可以监视块读取和写入时间。

  • 这些文件存储在stats_temp_directory参数指定的目录中pg_stat_tmp。

在服务器启动时执行恢复,将重置所有统计计数器.

  • 查看统计信息

  • 动态统计视图:

pg_stat_activity	每个服务器进程一行,显示与该进程的当前活动相关的信息,例如状态和当前查询。
pg_stat_replication	每个WAL发送器进程一行,显示有关复制到该发件人连接的备用服务器的统计信息。
pg_stat_wal_receiver	只有一行,显示来自该接收器连接服务器的WAL接收器的统计信息。
pg_stat_subscription	每个订阅至少一行,显示有关订阅工作人员的信息。
pg_stat_ssl	每个连接一行(常规和复制),显示有关此连接上使用的SSL的信息。
pg_stat_progress_vacuum	每个后端(包括autovacuum工作进程)运行一行VACUUM,显示当前进度
  • 收集的统计视图:

pg_stat_archiver	仅限一行,显示有关WAL归档进程活动的统计信息。
pg_stat_bgwriter	仅一行,显示有关后台编写器进程活动的统计信息。
pg_stat_database	每个数据库一行,显示数据库范围的统计信息。
pg_stat_database_conflicts	每个数据库一行,显示由于与备用服务器上的恢复冲突而导致的查询取消的数据库范围统计信息。
pg_stat_all_tables	当前数据库中每个表的一行,显示有关对该特定表的访问的统计信息。
pg_stat_sys_tables 只显示系统表。
pg_stat_user_tables  只显示用户表。
pg_stat_xact_all_tables  此视图中不存在实时和死行数以及真空和分析操作的列。
pg_stat_xact_sys_tables  只显示系统表。
pg_stat_xact_user_tables 只显示用户表。
pg_stat_all_indexes	当前数据库中每个索引占一行,显示有关对该特定索引的访问的统计信息
pg_stat_sys_indexes  只显示系统表上的索引
pg_stat_user_indexes 只显示用户表的索引。
pg_statio_all_tables  显示该特定表上的I / O统计信息。
pg_statio_sys_tables  只显示系统表。
pg_statio_user_tables  只显示用户表。
pg_statio_all_sequences 显示有关该特定序列的I/O的统计信息
pg_stat_user_functions 显示有关该函数执行的统计信息
pg_stat_xact_user_functions	 计数当前事务

视图详解:https://www.postgresql.org/docs/10/static/monitoring-stats.html

查看锁

  • 监视数据库活动的工具是pg_locks系统表。它允许数据库管理员查看有关锁管理器中未完成锁的信息.

  • 查看当前未完成的所有锁,特定数据库中关系的所有锁,特定关系上的所有锁,或特定PostgreSQL会话持有的所有锁。

  • 确定当前数据库中与最无锁的锁(可能是数据库客户端之间的争用源)之间的关系。

  • 确定锁争用对整体数据库性能的影响,以及争用因整体数据库流量而变化的程度。

监视磁盘使用情况

  • 查看任何表的磁盘使用情况:

SELECT pg_relation_filepath(oid),relpages from pg_class where relname='customer';
  • 显示TOAST表使用的空间:

SELECT relname,relpages FROM pg_class,(SELECT reltoastrelid 
    FROM pg_class WHERE relname = 'customer') AS ss WHERE oid=ss.reltoastrelid OR oid = (SELECT ind
    exrelid FROM pg_index WHERE indrelid = ss.reltoastrelid) ORDER BY relname;
  • 显示索引大小

SELECT c2.relname,c2.relpages
    FROM pg_class c,pg_class c2,pg_index i
        WHERE c.relname = 'customer' AND
            c.oid = i.indrelid AND
            c2.oid = i.indexrelid
        ORDER BY c2.relname;
  • 查看最大的表和索引:

SELECT relname,relpages FROM pg_class ORDER BY relpages DESC;
相关文章
热点文章
精彩视频
Tags

在线访客: 今日访问量: 昨日访问量: 总访问量:

×
请扫码支付

扫码支付后自动跳转查看