2015-02-04 6:37 GMT+01:00 Tom Lane <t...@sss.pgh.pa.us>: > Stephen Frost <sfr...@snowman.net> writes: > > All, > > We recently had a client complain that check_postgres' commitratio > > check would alert about relatively unused databases. As it turns > > out, the reason for this is because they automate running pg_dump > > against their databases (surely a good thing..), but pg_dump doesn't > > close out its transaction cleanly, leading to rolled back > > transactions. > > > At first blush, at least, this strikes me as an oversight which we > > should probably fix and possibly backpatch. > > No, somebody should fix check_postgres to count rollbacks as well as > commits as activity (as they obviously are). > > Well, actually, no. This is a commit ratio, not an activity counter, not even a transactions count.
The formula right now is: round(100.*sd.xact_commit/(sd.xact_commit+sd.xact_rollback), 2) which, AFAICT, is correct. The fact that the OP uses it to know if there's activity on his databases can get him false positives if he has no actual activity, except for dumps. I might be wrong, but there is nothing to fix on the check_postgres (at least, for this issue ;) ). The expectation of this user is to fix :) This is not an oversight, it's 100% intentional. The reason pg_dump > aborts rather than commits is to make entirely sure that it does not > commit any changes to the database. I would be against removing that > safety feature, considering that pg_dump is typically run as superuser. > We have frequently worried about security exploits that involve hijacking > superuser activities, and this behavior provides at least a small > increment of safety against such holes. > > +1 -- Guillaume. http://blog.guillaume.lelarge.info http://www.dalibo.com