最近,我为postgresql构建了一个数据库监控插件,用于查询postgresql中的pg_stat和pg_statio表。我想了解/测试我的插件是如何影响我的数据库的,但我担心如果我刚刚在数据库上打开插件,我的数据库可能会崩溃和烧毁……我希望有人能提出一些测试方法,或者回答我下面的一些问题/关注:
1)我想知道这些监视查询是否会导致我的其他非监视查询(我也认为需要写入pg_statio表来更新这些统计数据)锁定。
2)是否有一种方法可以捕获postgresql数据库表上的数据库流量,以便可以在数据库副本上重放此流量?
发布于 2015-09-04 02:02:42
使用pg_stat/pg_statio的db监视会减缓我的其他查询吗?
不是的。反正也没什么大不了的。
1)我想知道这些监视查询是否会导致我的其他非监视查询(我也认为需要写入pg_statio表来更新这些统计数据)锁定。
不是的。在PostgreSQL中,读取不要阻止写。
2)是否有一种方法可以捕获postgresql数据库表上的数据库流量,以便可以在数据库副本上重放此流量?
现在可不容易。
您可以在日志中记录语句和参数,以及允许将它们重新组装为事务和会话的log_line_prefix。尽管如此,解析日志还是会很痛苦的。另外,IIRC超长语句也可以被截断。
您可以在PostgreSQL 9.4中使用逻辑解码提取更改的行,但这不能告诉您哪些语句更改了它们,也不允许您再现加载。重播更改流与创建更改流是一个非常不同的负载。
像pg_stat_statements这样的工具可能会有所帮助,但不会给您带来逐字的更改流。
https://stackoverflow.com/questions/32381640
复制相似问题