Обсуждение: not all pg_stat_database fields reset after pg_stat_reset()

Поиск
Список
Период
Сортировка

not all pg_stat_database fields reset after pg_stat_reset()

От
tv@fuzzy.cz
Дата:
After calling pg_stat_reset, some of the database stats fields are not
actually reset, the value is preserved. I've found the bug is actually in
pgstat_recv_resetcounter function, where only some of the
PgStat_StatDBEntry fields are reset to 0.

This is true for those 6 fields:

n_tuples_returned
n_tuples_fetched
n_tuples_inserted
n_tuples_updated
n_tuples_deleted
last_autovac_time

The docs for "pg_stat_reset()" say "Reset all statistics counters for the
current database to zero (requiret superuser privileges)" and I don't see
any reason why these fields should not be reset, so I guess it's a bug.

See the patch attached (against current dev version).

regards
Tomas
Вложения

Re: not all pg_stat_database fields reset after pg_stat_reset()

От
Tom Lane
Дата:
tv@fuzzy.cz writes:
> After calling pg_stat_reset, some of the database stats fields are not
> actually reset, the value is preserved. I've found the bug is actually in
> pgstat_recv_resetcounter function, where only some of the
> PgStat_StatDBEntry fields are reset to 0.

> This is true for those 6 fields:

> n_tuples_returned
> n_tuples_fetched
> n_tuples_inserted
> n_tuples_updated
> n_tuples_deleted
> last_autovac_time

Hmm.  I think that not resetting the n_tuples_xxx fields was simply an
oversight in Magnus' patch that added them,
http://archives.postgresql.org/pgsql-committers/2007-03/msg00144.php
Magnus, was this intentional by any chance?

However, I disagree with resetting last_autovac_time ... that's not a
counter, so there's no particularly good reason to discard its value.

            regards, tom lane

Re: not all pg_stat_database fields reset after pg_stat_reset()

От
tv@fuzzy.cz
Дата:
> However, I disagree with resetting last_autovac_time ... that's not a
> counter, so there's no particularly good reason to discard its value.

Oh yeah, I see. Haven't realized that when writing the patch.

regards
Tomas

Re: not all pg_stat_database fields reset after pg_stat_reset()

От
Tom Lane
Дата:
tv@fuzzy.cz writes:
>> However, I disagree with resetting last_autovac_time ... that's not a
>> counter, so there's no particularly good reason to discard its value.

> Oh yeah, I see. Haven't realized that when writing the patch.

... on the other hand, the reset operation is discarding the per-table
last-vacuum times, so maybe discarding the database-level value too is
more consistent.  Not sure.

            regards, tom lane

Re: not all pg_stat_database fields reset after pg_stat_reset()

От
Magnus Hagander
Дата:
On Sat, Dec 11, 2010 at 18:31, Tom Lane <tgl@sss.pgh.pa.us> wrote:
> tv@fuzzy.cz writes:
>> After calling pg_stat_reset, some of the database stats fields are not
>> actually reset, the value is preserved. I've found the bug is actually in
>> pgstat_recv_resetcounter function, where only some of the
>> PgStat_StatDBEntry fields are reset to 0.
>
>> This is true for those 6 fields:
>
>> n_tuples_returned
>> n_tuples_fetched
>> n_tuples_inserted
>> n_tuples_updated
>> n_tuples_deleted
>> last_autovac_time
>
> Hmm. =A0I think that not resetting the n_tuples_xxx fields was simply an
> oversight in Magnus' patch that added them,
> http://archives.postgresql.org/pgsql-committers/2007-03/msg00144.php
> Magnus, was this intentional by any chance?

Nope, not that I can recall. Looks like an oversight.

--=20
=A0Magnus Hagander
=A0Me: http://www.hagander.net/
=A0Work: http://www.redpill-linpro.com/

Re: not all pg_stat_database fields reset after pg_stat_reset()

От
Tom Lane
Дата:
Magnus Hagander <magnus@hagander.net> writes:
> On Sat, Dec 11, 2010 at 18:31, Tom Lane <tgl@sss.pgh.pa.us> wrote:
>> Hmm.  I think that not resetting the n_tuples_xxx fields was simply an
>> oversight in Magnus' patch that added them,
>> http://archives.postgresql.org/pgsql-committers/2007-03/msg00144.php
>> Magnus, was this intentional by any chance?

> Nope, not that I can recall. Looks like an oversight.

OK, applied, along with the last_autovac_time reset --- I concluded that
keeping that at the database level wouldn't be consistent, since we're
throwing it away at the table level.

            regards, tom lane