Обсуждение: Change to 'timing on' globally
I know that we can toggle the timing at session level by using \timing in psql.
Thanks,
The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail. Get busy.
Is there a way to set the default to 'timing on' globally across the database or atleast across all psql statements by a specificied user ?
Thanks,
-Bala
The New Busy is not the too busy. Combine all your e-mail accounts with Hotmail. Get busy.
Excerpts from Balkrishna Sharma's message of lun jul 05 13:00:44 -0400 2010: > > I know that we can toggle the timing at session level by using \timing in psql. > Is there a way to set the default to 'timing on' globally across the database or atleast across all psql statements bya specificied user ? .psqlrc ?
Thanks. If I want to do at system-wide level, where do I store the psqlrc file (assuming I want to change the timing behavior system-wide)?
> CC: pgsql-admin@postgresql.org
> Subject: Re: [ADMIN] Change to 'timing on' globally
> From: alvherre@commandprompt.com
> To: b_ki@hotmail.com
> Date: Mon, 5 Jul 2010 13:10:30 -0400
>
> Excerpts from Balkrishna Sharma's message of lun jul 05 13:00:44 -0400 2010:
> >
> > I know that we can toggle the timing at session level by using \timing in psql.
> > Is there a way to set the default to 'timing on' globally across the database or atleast across all psql statements by a specificied user ?
>
> .psqlrc ?
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. Learn more.
(CentOS 5, Postgres 8.4)
$ ./pg_config --sysconfdir
/opt/PostgreSQL/8.4/etc/postgresql
But I don't have /opt/PostgreSQL/8.4/etc/postgresql directory. Just creating the directory and putting a psqlrc file over there does not seem to work.
On a side-note, I observered that timing value in ~/.psqlrc was ignored by psql -c "..." command but not by echo "...."|psql
Thought it was strange.
> CC: pgsql-admin@postgresql.org
> Subject: Re: [ADMIN] Change to 'timing on' globally
> From: alvherre@commandprompt.com
> To: b_ki@hotmail.com
> Date: Mon, 5 Jul 2010 13:10:30 -0400
>
> Excerpts from Balkrishna Sharma's message of lun jul 05 13:00:44 -0400 2010:
> >
> > I know that we can toggle the timing at session level by using \timing in psql.
> > Is there a way to set the default to 'timing on' globally across the database or atleast across all psql statements by a specificied user ?
>
> .psqlrc ?
>
> --
> Sent via pgsql-admin mailing list (pgsql-admin@postgresql.org)
> To make changes to your subscription:
> http://www.postgresql.org/mailpref/pgsql-admin
Hotmail has tools for the New Busy. Search, chat and e-mail from your inbox. Learn more.
Balkrishna Sharma wrote:
>
> Thanks. If I want to do at system-wide level, where do I store the
> psqlrc file (assuming I want to change the timing behavior system-wide)?
> (CentOS 5, Postgres 8.4)
> $ ./pg_config --sysconfdir/opt/PostgreSQL/8.4/etc/postgresql
> But I don't have /opt/PostgreSQL/8.4/etc/postgresql directory. Just
> creating the directory and putting a psqlrc file over there does not
> seem to work.
I just tested it here on Ubuntu and it worked:
$ sudo mkdir etc
$ sudo mkdir etc/postgresql
$ cd etc/postgresql/
$ sudo vi psqlrc
# add \echo test
$ pwd
/opt/PostgreSQL/8.4/etc/postgresql
$ ../../bin/psql -U postgres postgres
--> test
psql (8.4.2)
Type "help" for help.
postgres=#
> On a side-note, I observered that timing value in ~/.psqlrc was
> ignored by psql -c "..." command but not by echo "...."|psqlThought
> it was strange.
Yeah, that is odd.
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ None of us is going to be here forever. +
> I just tested it here on Ubuntu and it worked:
> From: bruce@momjian.us
> Subject: Re: [ADMIN] Change to 'timing on' globally
> To: b_ki@hotmail.com
> Date: Tue, 6 Jul 2010 10:48:48 -0400
> CC: alvherre@commandprompt.com; pgsql-admin@postgresql.org
>
> Balkrishna Sharma wrote:
> >
> > Thanks. If I want to do at system-wide level, where do I store the
> > psqlrc file (assuming I want to change the timing behavior system-wide)?
>
> > (CentOS 5, Postgres 8.4)
> > $ ./pg_config --sysconfdir/opt/PostgreSQL/8.4/etc/postgresql
>
> > But I don't have /opt/PostgreSQL/8.4/etc/postgresql directory. Just
> > creating the directory and putting a psqlrc file over there does not
> > seem to work.
>
> I just tested it here on Ubuntu and it worked:
>
> $ sudo mkdir etc
> $ sudo mkdir etc/postgresql
> $ cd etc/postgresql/
> $ sudo vi psqlrc
> # add \echo test
> $ pwd
> /opt/PostgreSQL/8.4/etc/postgresql
> $ ../../bin/psql -U postgres postgres
> --> test
> psql (8.4.2)
> Type "help" for help.
>
> postgres=#
>
> > On a side-note, I observered that timing value in ~/.psqlrc was
> > ignored by psql -c "..." command but not by echo "...."|psqlThought
> > it was strange.
>
> Yeah, that is odd.
>
> --
> Bruce Momjian <bruce@momjian.us> http://momjian.us
> EnterpriseDB http://enterprisedb.com
>
> + None of us is going to be here forever. +
Hotmail is redefining busy with tools for the New Busy. Get more from your inbox. See how.
I followed your steps and it worked in the way you indicated, on CentOS as well. But it still does not:
a. work with psql -c "query" syntax. (Works in echo mode or in interactive mode.)
b. it does not still seem to work if you fire the queries from a client box (in any mode - interactive or otherwise)
ON SERVER I get:
Timing is on.
now
------------------------------
2010-07-06 11:06:13.16734-04
(1 row)
Time: 0.574 ms
ON CLIENT I just get:
now
-------------------------------
2010-07-06 11:06:28.455395-04
(1 row)
~~~~~~~~~~~~~~~~~~~~
Basically I am firing a lot of psql through unix script on several client machines and a lot of the psql are hanging for some other reasons. I also need to capture the timing of each query. So I need timing to be on.
Doing the following captures the timing but I don't know which psql statement is hanging when I do ps aux|grep psql
echo '\timing \\select * from ........' | psql
On ps aux|grep psql I just see:
> ps aux|grep psql
2255 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql
3883 0.0 0.0 155636 1676 pts/1 S Jul05 0:00 psql
4672 0.0 0.0 155636 1672 pts/1 S Jul05 0:00 psql
4713 0.0 0.0 155636 1672 pts/1 S Jul05 0:00 psql
4737 0.0 0.0 155636 1672 pts/1 S Jul05 0:00 psql
4798 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql
5050 0.0 0.0 155636 1676 pts/1 S Jul05 0:00 psql
5086 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql
5405 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql
7255 0.0 0.0 155644 1796 pts/1 S Jul05 0:00 psql
psql -c 'select * from "DAPP".student_common_data where student_id = 1000 and field_id =1988;' does make the ps aux more informative but it does not capture the query timing. From what I understand you cannot mix ('timing + query') in "-c" mode.
So trying to set 'timing on' outside the individual queries (and preferably outside the client machines) somewhere on the server so that psql -c on client would capture the timing automatically.
> From: bruce@momjian.us
> Subject: Re: [ADMIN] Change to 'timing on' globally
> To: b_ki@hotmail.com
> Date: Tue, 6 Jul 2010 10:48:48 -0400
> CC: alvherre@commandprompt.com; pgsql-admin@postgresql.org
>
> Balkrishna Sharma wrote:
> >
> > Thanks. If I want to do at system-wide level, where do I store the
> > psqlrc file (assuming I want to change the timing behavior system-wide)?
>
> > (CentOS 5, Postgres 8.4)
> > $ ./pg_config --sysconfdir/opt/PostgreSQL/8.4/etc/postgresql
>
> > But I don't have /opt/PostgreSQL/8.4/etc/postgresql directory. Just
> > creating the directory and putting a psqlrc file over there does not
> > seem to work.
>
> I just tested it here on Ubuntu and it worked:
>
> $ sudo mkdir etc
> $ sudo mkdir etc/postgresql
> $ cd etc/postgresql/
> $ sudo vi psqlrc
> # add \echo test
> $ pwd
> /opt/PostgreSQL/8.4/etc/postgresql
> $ ../../bin/psql -U postgres postgres
> --> test
> psql (8.4.2)
> Type "help" for help.
>
> postgres=#
>
> > On a side-note, I observered that timing value in ~/.psqlrc was
> > ignored by psql -c "..." command but not by echo "...."|psqlThought
> > it was strange.
>
> Yeah, that is odd.
>
> --
> Bruce Momjian <bruce@momjian.us> http://momjian.us
> EnterpriseDB http://enterprisedb.com
>
> + None of us is going to be here forever. +
Hotmail is redefining busy with tools for the New Busy. Get more from your inbox. See how.
Balkrishna Sharma wrote:
>
> > I just tested it here on Ubuntu and it worked:I followed your steps and it worked in the way you indicated, on
CentOSas well. But it still does not:a. work with psql -c "query" syntax. (Works in echo mode or in interactive
mode.)b.it does not still seem to work if you fire the queries from a client box (in any mode - interactive or
otherwise)ONSERVER I get:Timing is on. now------------------------------ 2010-07-06 11:06:13.16734-04(1
row)Time:0.574 ms
>
> ON CLIENT I just get: now------------------------------- 2010-07-06 11:06:28.455395-04(1 row)
>
> ~~~~~~~~~~~~~~~~~~~~Basically I am firing a lot of psql through unix script on several client machines and a lot of
thepsql are hanging for some other reasons. I also need to capture the timing of each query. So I need timing to be on.
> Doing the following captures the timing but I don't know which psql statement is hanging when I do ps aux|grep
psqlecho'\timing \\select * from ........' | psqlOn ps aux|grep psql I just see:> ps aux|grep psql2255 0.0 0.0
155636 1668 pts/1 S Jul05 0:00 psql3883 0.0 0.0 155636 1676 pts/1 S Jul05 0:00 psql4672 0.0 0.0
155636 1672 pts/1 S Jul05 0:00 psql4713 0.0 0.0 155636 1672 pts/1 S Jul05 0:00 psql4737 0.0 0.0
155636 1672 pts/1 S Jul05 0:00 psql4798 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql5050 0.0 0.0
155636 1676 pts/1 S Jul05 0:00 psql5086 0.0 0.0 155636 1668 pts/1 S Jul05 0:00 psql5405 0.0 0.0
155636 1668 pts/1 S Jul05 0:00 psql7255 0.0 0.0 155644 1796 pts/1 S Jul05 0:00 psql
>
> psql -c 'select * from "DAPP".student_common_data where student_id = 1000 and field_id =1988;' does make the ps aux
moreinformative but it does not capture the query timing. From what I understand you cannot mix ('timing + query') in
"-c"mode.
> So trying to set 'timing on' outside the individual queries (and preferably outside the client machines) somewhere on
theserver so that psql -c on client would capture the timing automatically.
I think you need to look at postgresql.conf variables like
log_min_duration_statement, and you are right that psqlrc is only going
to be read for clients on the server machine, and only via psql.
---------------------------------------------------------------------------
>
>
>
> > From: bruce@momjian.us
> > Subject: Re: [ADMIN] Change to 'timing on' globally
> > To: b_ki@hotmail.com
> > Date: Tue, 6 Jul 2010 10:48:48 -0400
> > CC: alvherre@commandprompt.com; pgsql-admin@postgresql.org
> >
> > Balkrishna Sharma wrote:
> > >
> > > Thanks. If I want to do at system-wide level, where do I store the
> > > psqlrc file (assuming I want to change the timing behavior system-wide)?
> >
> > > (CentOS 5, Postgres 8.4)
> > > $ ./pg_config --sysconfdir/opt/PostgreSQL/8.4/etc/postgresql
> >
> > > But I don't have /opt/PostgreSQL/8.4/etc/postgresql directory. Just
> > > creating the directory and putting a psqlrc file over there does not
> > > seem to work.
> >
> > I just tested it here on Ubuntu and it worked:
> >
> > $ sudo mkdir etc
> > $ sudo mkdir etc/postgresql
> > $ cd etc/postgresql/
> > $ sudo vi psqlrc
> > # add \echo test
> > $ pwd
> > /opt/PostgreSQL/8.4/etc/postgresql
> > $ ../../bin/psql -U postgres postgres
> > --> test
> > psql (8.4.2)
> > Type "help" for help.
> >
> > postgres=#
> >
> > > On a side-note, I observered that timing value in ~/.psqlrc was
> > > ignored by psql -c "..." command but not by echo "...."|psqlThought
> > > it was strange.
> >
> > Yeah, that is odd.
> >
> > --
> > Bruce Momjian <bruce@momjian.us> http://momjian.us
> > EnterpriseDB http://enterprisedb.com
> >
> > + None of us is going to be here forever. +
>
> _________________________________________________________________
> Hotmail is redefining busy with tools for the New Busy. Get more from your inbox.
> http://www.windowslive.com/campaign/thenewbusy?ocid=PID28326::T:WLMTAGL:ON:WL:en-US:WM_HMP:042010_2
--
Bruce Momjian <bruce@momjian.us> http://momjian.us
EnterpriseDB http://enterprisedb.com
+ None of us is going to be here forever. +