暂无图片
pg中序列的使用率达到80%的给找出来,做预警用
我来答
分享
暂无图片 匿名用户
pg中序列的使用率达到80%的给找出来,做预警用

pg中序列的使用率达到80%的给找出来,做预警用

我来答
添加附件
收藏
分享
问题补充
3条回答
默认
最新
lianR

在PostgreSQL中,你可以使用以下的SQL查询来找出使用率达到80%的序列:

```sql
SELECT  
     nspname  ||  '.'  ||  relname  AS  "sequence",
     round(((last_value  -  min_value)::numeric  /  (max_value  -  min_value)::numeric)*100,  2)  AS  "usage_percentage"
FROM  
     (SELECT  
     c.relname,  
     n.nspname,  
     coalesce(last_value  -  min_value,  0)  AS  last_value,  
     CASE  
     WHEN  increment_by  >  0  THEN  max_value  -  min_value  
     ELSE  min_value  -  max_value  
     END  AS  max_value
     FROM  
     pg_class  c  
     JOIN  pg_namespace  n  ON  n.oid  =  c.relnamespace  
     JOIN  pg_sequences  s  ON  s.schemaname  =  n.nspname  AND  s.sequencename  =  c.relname
     WHERE  
     c.relkind  =  'S'  
     )  sq
WHERE  
     "usage_percentage"  >=  80;
```

这个查询会返回所有使用率超过80%的序列的名称和使用率。请注意,这个查询可能需要根据你的具体情况进行调整。

如果你想要对这些序列进行预警,你可以将这个查询集成到你的监控系统中,或者创建一个定时任务来定期运行这个查询并发送预警。

暂无图片 评论
暂无图片 有用 7
风行

第一步
使用top 查看当前使用CPU情况, 确认造成CPU使用率告警的源头是Postgresql;

第二步
select *from pg_stat_activity where state not in ('idle') and pid <>pg_backend_pid();
查看现场的进程情况:

可以通过top 中最高CPU使用率的PID ,对应在pg_stat_activity 查询的PID 查看具体的语句,当然可直接使用auto_explain;
同时基本可以判断主要是哪个业务库的消耗引起;

第三步
对第二步需实时监控,可能因某些原因会错过了事故现场,就比较难实时获取问题代码,基于这个原因,我们需使用【pg_stat_statements】该插件实时收取执行统计信息;

暂无图片 评论
暂无图片 有用 5
P
pgdba
暂无图片 评论
暂无图片 有用 1
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏