我最近为postgresql构建了一个数据库监控插件,用于查询postgresql中的pg_stat和pg_statio表。我想了解/测试我的插件可能会如何影响我的数据库,但担心如果我只是在我的数据库上插入我的插件,我的数据库可能崩溃并烧毁...我希望有人可以建议一些测试方法或回答我的一些以下问题/疑虑:
1)我想知道这些监控查询是否会导致我的其他非监控查询(我假设还需要写入pg_statio表来更新这些统计信息)来锁定。
2)我有没有办法在postgresql数据库表上捕获数据库流量,这样我就可以在数据库副本上重放这些流量?
答案 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
这样的工具可以提供一些帮助,但不会给你一个逐字的变化。