Re: New SQL counter statistics view (pg_stat_sql)

From: Haribabu Kommi <kommi(dot)haribabu(at)gmail(dot)com>
To: vinayak <Pokale_Vinayak_q3(at)lab(dot)ntt(dot)co(dot)jp>
Cc: Alvaro Herrera <alvherre(at)2ndquadrant(dot)com>, Peter Eisentraut <peter(dot)eisentraut(at)2ndquadrant(dot)com>, Robert Haas <robertmhaas(at)gmail(dot)com>, Andres Freund <andres(at)anarazel(dot)de>, Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>, "pgsql-hackers(at)postgresql(dot)org" <pgsql-hackers(at)postgresql(dot)org>
Subject: Re: New SQL counter statistics view (pg_stat_sql)
Date: 2016-10-17 01:22:51
Message-ID: CAJrrPGet_aX1u5Swa-r6oM9eDtKiR=Ksn8e52Lg3f4guUob4Vg@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

On Fri, Oct 14, 2016 at 7:48 PM, vinayak <Pokale_Vinayak_q3(at)lab(dot)ntt(dot)co(dot)jp>
wrote:

>
> On 2016/10/12 12:21, Haribabu Kommi wrote:
>
> I tried changing the pg_stat_sql into row mode and ran the regress suite
> to
> add different type of SQL commands to the view and ran the pgbench test
> on my laptop to find out any performance impact with this patch.
>
> HEAD PATCH
> pgbench - select 828 816
>
> Here I attached the pg_stat_sql patch to keep track of all SQL commands
> based on the commandTag and their counts. I attached the result of this
> view that is run on the database after "make installcheck" just for
> reference.
>
> Some comments:
> I think we can use pgstat_* instead of pgstat* for code consistency.
>
> +static HTAB *pgStatBackendSql = NULL;
> How about *pgstat_backend_sql
>
> +HTAB *pgStatSql = NULL;
> How about *pgstat_sql
>

Changed.

> +static void pgstat_recv_sqlstmt(PgStat_MsgSqlstmt * msg, int len);
> How about PgStat_MsgSqlstmt *msg instead of PgStat_MsgSqlstmt * msg
>

Added the typdef into typdef.list file so this problem never occurs.

> +typedef struct PgStatSqlstmtEntry
> How about PgStat_SqlstmtEntry
>
> +typedef struct PgStatMsgSqlstmt
> How about PgStat_MsgSqlstmt
>

changed.

> I have observed below behavior.
> I have SET track_sql to ON and then execute the SELECT command and it
> return 0 rows.
> It start counting from the second command.
> postgres=# SET track_sql TO ON;
> SET
> postgres=# SELECT * FROM pg_stat_sql where tag='SELECT';
> tag | count
> -----+-------
> (0 rows)
>
> postgres=# SELECT * FROM pg_stat_sql where tag='SELECT';
> tag | count
> --------+-------
> SELECT | 1
> (1 row)
> Is this a correct behavior?
>

Yes. This is because the stats of the SQL statements that are collected are
sent to
the stats collector at the end of the SQL statement execution. The current
SQL statement
is not counted in the result.

Updated patch is attached.

Regards,
Hari Babu
Fujitsu Australia

Attachment Content-Type Size
pg_stat_sql_row_mode_2.patch application/octet-stream 26.3 KB

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Noah Misch 2016-10-17 01:46:05 Re: amcheck (B-Tree integrity checking tool)
Previous Message Haribabu Kommi 2016-10-17 01:22:20 Re: New SQL counter statistics view (pg_stat_sql)