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

时间:2015-09-03 17:06:31

标签: database postgresql monitoring pg-stat-statements

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

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

2)我有没有办法在postgresql数据库表上捕获数据库流量,这样我就可以在数据库副本上重放这些流量?

1 个答案:

答案 0 :(得分:1)

  

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

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

  

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

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

  

2)我有没有办法在postgresql数据库表上捕获数据库流量,这样我就可以在数据库副本上重放这些流量?

目前不容易。

您可以在日志中记录语句和参数,以及允许您将它们重新组合成事务和会话的-(void)viewDidAppear:(BOOL)animated{ [super viewDidAppear:animated]; self.contentHeight.constant =self.lastLabel.frame.origin.y+ self.lastLabel.frame.size.height; [self.view layoutIfNeeded]; } 。尽管如此解析日志会很痛苦。此外,IIRC超长报表可能会被截断。

您可以在PostgreSQL 9.4中使用逻辑解码提取行已更改,但这并不能告诉您哪些语句更改了它们,并且它不会让您重现负载。重新创建更改流是一个非常不同的负载,首先创建它。

log_line_prefix这样的工具可以提供一些帮助,但不会给你一个逐字的变化。