使用 pg_stat/pg_statio 进行数据库监控会减慢我的其他查询速度吗?

will db monitoring with pg_stat/pg_statio slow down my other queries?

我最近为 postgresql 构建了一个数据库监控插件,用于查询 postgresql 中的 pg_stat 和 pg_statio tables。我想 understand/test 我的插件如何影响我的数据库,但担心如果我只是在我的数据库上打开我的插件,我的数据库可能会崩溃并烧毁......我希望有人可以建议一些测试方法或回答一些问题我的 questions/concerns 以下:

1) 我想知道这些监控查询是否会导致我的其他非监控查询(我假设也需要写入 pg_statio tables 来更新这些统计信息)到锁定。

2) 有没有办法让我捕获 postgresql 数据库上的数据库流量 table 以便我可以在数据库的副本上重放此流量?

will db monitoring with pg_stat/pg_statio slow down my other queries?

没有。无论如何,并不显着。

1) I was wondering if these monitoring queries would cause my other non-monitoring queries (which I assume also need to write to the pg_statio tables to update these statistics) to lock up.

没有。在 PostgreSQL 中,读取不会阻止写入。

2) Is there a way for me to capture database traffic on a postgresql database table so I can maybe replay this traffic on a copy of the database?

目前不容易。

您可以在日志中记录语句和参数,以及 log_line_prefix 让您将它们重新组合成事务和会话。不过为此解析日志会很痛苦。此外,可以截断 IIRC 超长语句。

您可以在 PostgreSQL 9.4 中使用逻辑解码提取 行更改,但这不会告诉您哪些语句更改了它们,也不会让您重现负载.重播变更流与最初创建变更流是完全不同的负载。

pg_stat_statements 这样的工具可以提供一点帮助,但不会为您提供逐字的更改流。