如何解决是否可以从PL / PGSQL函数内部监视PostgreSQL服务器的性能?
这听起来有些奇怪,因为我想以编程方式知道在服务器中执行大量写入的PL / PGsql函数是否是一个“好时机”。 “好时机”是指考虑一些有关负载水平,并发水平或其他任何级别的Postgresql服务器的直接或计算指标。
我知道那里有许多专门用于性能跟踪的高级应用程序,例如https://www.datadoghq.com。但是我只需要一个简单的内部KPI来更改或延迟执行这些繁重的过程,直到出现“更好的时刻”。
其中一些过程会清除表,一些会对数百万行进行平均值/求和计算,一些会检查远程表等。当并发用户压力下降时,它们可能会等待数分钟或数小时的“更好时机”。 / p>
有什么主意吗?
解决方法
您可以通过以下方式查看其他活跃的会话:
select count(*) from pg_stat_activity where state='active';
但是您必须是超级用户,或者具有pg_monitor角色,否则对于其他用户的会话,状态将为NULL。如果那让您感到困扰,则可以使用SECURITY DEFINER编写函数以允许访问此信息。 (无论如何,您可能都应该将其放入自己的函数中,这意味着除非您是唯一可用的语言,否则没有理由需要在plpgsql中实现它。)
您还可以通过使用适当特权的pl语言来调用任意操作系统操作。通过滥用COPY...FROM PROGRAM
来includes from plpgsql。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。