暂无图片
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
打赏 0
风行

第一步
使用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
打赏 0
P
pgdba
暂无图片 评论
暂无图片 有用 1
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
金仓数据库kingbaseES的字符集该如何选择?
回答 2
在金仓数据库KingbaseES中,你可以选择UTF8、GBK或GB18030作为字符集。以下是关于这三种字符集的一些信息,以帮助你做出选择:UTF8:UTF8是一种通用的字符编码方式,它能够表示世界
pg中的NestLoop,怎么确定哪个是外表,那个是内表??
回答 1
按执行计划的解读顺序:从上到下先执行的表为驱动表(t3外表),后执行的为被驱动表(t4内表)
用postgresql连续往一个表里执行4次insert语句,每次insert都要提交一次事务吗?
回答 1
已采纳
如果你的4次插入都是在一个会话中,最后一次提交就行。如果你是插入后退出在登录再插入这样是需要每次commit的。如果你的自动提交是打开的,原则上则不需要提交,事务会自动提交的。postgres\ech
postgresql,查询某列中最大值那条记录,sql怎么写最简单高效。
回答 1
已采纳
来自于高性能mysql一书的一个方法。我想同样适用于postgre对这列建一个倒顺索引&nbsp;然后selectfieldfromtlimit1就可以。性能最好
postgresql语法问题:table.begin_time+(''''||years::numeric||'''')::interval 这里的''''||是什么作用呢?
回答 1
两个单引号之间的,表示一个字符串,如果此字符串中需要存在单引号,则需要对单引号进行转义,转义的方式就是用两个单引号;而|则表示拼接前后两个字符串,构成一个字符串
postgre数据库pg_namespace视图的疑问,请问=UC/postgres是什么意思?
回答 2
已采纳
被授予用户名权限缩写/授予用户,例如,postgresUC/postgres则表示postgres具有对象上的UC权限(U表示Usage、C表示Create,即可以在public,schema中建表)
在postgresql 表中建了一个check约束使用了like判断: check (name like '[0-9]'); 结果insert into 表名 values('0'); 执行报错:违反了检醒约束
回答 1
已采纳
可以使用similarto方法替换like(postgres@[local])[sbtest]14:01:15createtabletlike(idint,namevarchar(20)check(n
postgresql命令pg_ctl 参数-D datadir是谁的存储目录?
回答 2
已采纳
答案是postgresql.conf配置文件存储目录
postgreSQL有共享临时表吗?
回答 2
使用CREATE{TEMPORARY|TEMP}TABLE创建的临时表是会话级的,不是多会话共享的。使用CREATEUNLOGGEDTABLE可以创建一个记录REDO日志的表,它是多会话共享的。
怎么能让postgresql 使用多个CPU?
回答 1
多来几个这个的SQL,多开几个这样的窗口。你就会发现都用起来了。