Re: SQL logging (log_min_duration_statement) not working

Поиск
Список
Период
Сортировка
От Pallav Kalva
Тема Re: SQL logging (log_min_duration_statement) not working
Дата
Msg-id 428B853B.7000106@deg.cc
обсуждение исходный текст
Ответ на Re: SQL logging (log_min_duration_statement) not working  ("Anjan Dave" <adave@vantage.com>)
Список pgsql-admin
Hi Anjan,

    I used to follow this procedure while using Postgres 7.4 version, we
are now using Postgres 8.0.2 and I dont have give the log file path name
everytime I start the postgres , I use these paramaters in the
postgresql.conf

redirect_stderr = true
log_directory = '/var/lib/pgsql8/pg_log'
log_filename = 'postgresql-%a.log'


Pallav


Anjan Dave wrote:

>For logging the queries taking 5+ seconds, try this:
>
>In postgresql.conf:
>syslog = 0    # range 0-2; 0=stdout; 1=both; 2=syslog
>syslog_facility = 'LOCAL0'
>syslog_ident = 'postgres'
>
>log_min_duration_statement = 5000
>
>Then, in your pg startup script (etc/init.d/Postgresql), you want to
>have something like PGLOG variable...and change the startup command so
>stuff goes into this file:
>
>PGLOG=/var/log/pglogs
>export PGLOG
>  $SU -l postgres -c "$PGENGINE/initdb --pgdata=$PGDATA" >> $PGLOG 2>&1
>< /dev/null
> $SU -l postgres -c "$PGENGINE/postmaster -p ${PGPORT} -D '${PGDATA}'
>${PGOPTS} &" >> $PGLOG 2>&1 < /dev/null
>
>Note, you need to stop|start the database for all this, and do copy your
>original init.d/Postgresql and the data/Postgresql.conf files first.
>
>
>Thanks,
>Anjan
>
>
>-----Original Message-----
>From: Scott Marlowe [mailto:smarlowe@g2switchworks.com]
>Sent: Wednesday, May 18, 2005 11:52 AM
>To: Pallav Kalva
>Cc: pgsql-admin@postgresql.org
>Subject: Re: [ADMIN] SQL logging (log_min_duration_statement) not
>working
>
>On Wed, 2005-05-18 at 09:49, Pallav Kalva wrote:
>
>
>>Scott Marlowe wrote:
>>
>>
>>
>>>On Wed, 2005-05-18 at 08:35, Pallav Kalva wrote:
>>>
>>>
>>>
>>>
>>>>Hi Everybody,
>>>>
>>>>
>>>>   I am having problems with logging long running SQL in the log
>>>>
>>>>
>file.
>
>
>>>>I have set log_min_duration_statement = 5000 (5secs) and it is not
>>>>logging sql statements that took over 5 secs and this is only from
>>>>queries generated by Hibernate . here is a sample query from
>>>>
>>>>
>hibernate :
>
>
>>>----------------------------------------------------------------------
>>>
>>>
>-------------------
>
>
>>>>select listingadd1_.addressid as col_0_0_
>>>>
>>>>
>>>>from listing.listing listing0_, listing.address listingadd1_
>>>
>>>
>>>>where ((select count(taxrolls2_.fkaddressid)
>>>>      from listing.taxroll taxrolls2_
>>>>      where listingadd1_.addressid=taxrolls2_.fkaddressid)=0 )
>>>>      and(listing0_.fkbestaddressid=listingadd1_.addressid )
>>>>      and(listing0_.entrydate>$1 )
>>>>order by  listingadd1_.addressid asc
>>>>
>>>>
>>>----------------------------------------------------------------------
>>>
>>>
>----------------------
>
>
>>>> This above query take more than 5 secs to run and it wont get
>>>>
>>>>
>logged ,
>
>
>>>>where as all other queries which are not generated by Hibernate are
>>>>logged. Is this expected behavior ?  am I missing something else ?
>>>>Please advice.
>>>>
>>>>
>>>>
>>>>
>>>Are you sure it's taking more than 5 seconds to run, not that it's
>>>taking <5 seconds to run and >5 seconds to return the data.  I'm
>>>
>>>
>pretty
>
>
>>>sure the time it takes to ship out the data isn't counted in the time
>>>used to decide whether to log the query or not by the postmaster.
>>>
>>>I.e. what does explain analyze QUERY HERE say about the execution
>>>
>>>
>time?
>
>
>>>
>>>
>>>
>>>
>>Hi Scott,
>>
>>     Thanks! for the reply. The query for sure runs for more than 5
>>secs, I  passed the same value again and ran the query in the psql
>>
>>
>with
>
>
>>explain analyze .
>>
>>    Here is the explain analyze output :
>>
>>
>
>SNIP
>
>
>
>>   ->  Nested Loop  (cost=0.00..17503496.52 rows=678 width=4) (actual
>>time=5.185..31575.629 rows=398459 loops=1)
>>
>>
>
>SNIP
>
>
>
>> Total runtime: 38026.606 ms
>>(13 rows)
>>
>>
>
>OK, two problems here, I assume.  One is your logging is dodgy right
>now.  Is postgresql logging anything else?  Are you sure your logs are
>going where you think they are, etc?
>
>Secondly, it looks from the nested loop part of your explain analyze
>that there's a part where the query planner THINKS there's gonna be 678
>rows, but actually gets 398459, that's a miscalculation by a factor of
>about 600.  Since there's no functions or anything I recognize as being
>a common cause of such a mis-estimation, I'd guess that either you need
>to analyze, or if you have analyzed, you may need to alter the stats
>target for the column entrydate.
>
>---------------------------(end of broadcast)---------------------------
>TIP 6: Have you searched our list archives?
>
>               http://archives.postgresql.org
>
>
>---------------------------(end of broadcast)---------------------------
>TIP 5: Have you checked our extensive FAQ?
>
>               http://www.postgresql.org/docs/faq
>
>
>



В списке pgsql-admin по дате отправления:

Предыдущее
От: Pallav Kalva
Дата:
Сообщение: Re: SQL logging (log_min_duration_statement) not working
Следующее
От: Jeff Boes
Дата:
Сообщение: Sidetracking pg_autovacuum