首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >数据库PostrageSQL-监控数据库活动

数据库PostrageSQL-监控数据库活动

作者头像
cwl_java
发布2021-08-30 12:00:03
发布2021-08-30 12:00:03
4K0
举报
文章被收录于专栏:cwl_Javacwl_Java

Chapter 28. 监控数据库活动

一个数据库管理员常常会疑惑,“系统现在正在做什么?”这一章会讨论如何搞清楚这个问题。

一些工具可以用来监控数据库活动并且分析性能。这一章的大部分都致力于描述PostgreSQL的统计收集器,但是我们也不能忽视常规的 Unix 监控程序,如ps、top、iostat和vmstat。另外,一旦我们发现了一个性能差的查询,可能需要PostgreSQL的EXPLAIN命令来进行进一步的调查。Section 14.1会讨论EXPLAIN以及其他用来理解个体查询行为的方法。

28.1. 标准 Unix 工具

在大部分 Unix 平台上,PostgreSQL会修改由ps报告的命令标题,这样个体服务器进程可以被标识。一个显示样例是

(ps的调用方式随不同的平台而变,但是显示的细节都差不多。这个例子来自于一个最近的Linux 系统)。列在这里的第一个进程是主服务器进程。为它显示的命令参数是当它被启动时使用的那些。接下来的五个进程是由主进程自动启动的后台工作者进程(如果你已经设置系统为不启动统计收集器,“统计收集器”进程将不会出现;同样“自动清理发动”进程也可以被禁用)。剩余的每一个进程都是一个处理一个客户端连接的服务器进程。每个这种进程都会把它的命令行显示设置为这种形式

postgres: user database host activity 在该客户端连接的生命期中,用户、数据库以及(客户端)主机项保持不变,但是活动指示器会改变。活动可以是闲置(即等待一个客户端命令)、在事务中闲置(在一个BEGIN块里等待客户端)或者一个命令类型名,例如SELECT。还有,如果服务器进程正在等待一个其它会话持有的锁, 等待中会被追加到上述信息中。在上面的例子中,我们可以推断:进程 15606 正在等待进程 15610 完成其事务并且因此释放一些锁(进程 15610 必定是阻塞者,因为没有其他活动会话。在更复杂的情况中,可能需要查看pg_locks系统视图来决定谁阻塞了谁)。

如果配置了cluster_name,则集簇的名字 也将会显示在ps的输出中:

代码语言:javascript
复制
$ psql -c 'SHOW cluster_name'
 cluster_name
--------------
 server1
(1 row)
$ ps aux|grep server1
postgres 27093 0.0 0.0 30096 2752 ? Ss 11:34 0:00 postgres:
 server1: background writer

如果你已经关闭了update_process_title,那么活动指示器将不会被更新,进程标题仅在新进程被启动的时候设置一次。 在某些平台上这样做可以为每个命令节省可观的开销,但在其它平台上却不明显。

Solaris需要特别的处理。你必需使用/usr/ucb/ps而不是/bin/ps。 你还必需使用两个w标志,而不是一个。另外,你对postgres命令的最初调用必须用一个比服务器进程提供的短的ps状态显示。如果你没有满足全部三个要求,每个服务器进程的ps输出将是原始的postgres命令行。 command line.

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/12/28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Chapter 28. 监控数据库活动
    • 28.1. 标准 Unix 工具
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档