0

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

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

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

4

1 回答 1

1

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

不,无论如何,并不重要。

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

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

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

目前不容易。

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

您可以在 PostgreSQL 9.4 中使用逻辑解码提取更改的行,但这不会告诉您哪些语句更改了它们,也不会让您重现负载。重播更改流与一开始就创建它是一个非常不同的负载。

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

于 2015-09-04T02:02:42.870 回答