Re: Parsing VACUUM VERBOSE

From: "Y Sidhu" <ysidhu(at)gmail(dot)com>
To: pgsql-performance(at)postgresql(dot)org
Subject: Re: Parsing VACUUM VERBOSE
Date: 2007-06-14 21:34:13
Message-ID: b09064f30706141434t530844a3x5ad09a1f7ef2aac7@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-performance

On 6/14/07, Guillaume Smet <guillaume(dot)smet(at)gmail(dot)com> wrote:
>
> On 6/14/07, Y Sidhu <ysidhu(at)gmail(dot)com> wrote:
> > Can anyone share what value they have set log_min_duration_statement to?
>
> It's OT but we use different values for different databases and needs.
>
> On a very loaded database with a lot of complex queries (lots of join
> on big tables, proximity queries, full text queries), we use 100 ms.
> It logs ~ 300 000 queries. It allows us to detect big regressions or
> new queries which are very slow.
>
> On another database where I want to track transaction leaks, I'm
> forced to put it to 0ms.
>
> Basically, the answer is: set it to the lowest value you can afford
> without impacting too much your performances (and if you use syslog,
> use async I/O or send your log to the network).
>
> --
> Guillaume
>

I am trying to answer the question of how to tell if the cleanup of an index
may be locked by a long transaction. And in the bigger context, why vacuums
are taking long? What triggers them? I came across the following query which
shows one table 'connect_tbl' with high "heap hits" and "low heap buffer %"
Now, 'heap' seems to be a memory construct. Any light shedding is
appreciated.

mydb=# SELECT
mydb-# 'HEAP:'||relname AS table_name,
mydb-# (heap_blks_read+heap_blks_hit) AS heap_hits,
ROUND(((heap_blks_hit)::NUMERIC/(heap_blks_read+heap_blks_hit)*100),
2)
mydb-# ROUND(((heap_blks_hit)::NUMERIC/(heap_blks_read+heap_blks_hit)*100),
2)
mydb-# AS heap_buffer_percentage
mydb-# FROM pg_statio_user_tables
mydb-# WHERE(heap_blks_read+heap_blks_hit)>0
mydb-# UNION
mydb-# SELECT
mydb-# 'TOAST:'||relname,
mydb-# (toast_blks_read+toast_blks_hit),
mydb-#
ROUND(((toast_blks_hit)::NUMERIC/(toast_blks_read+toast_blks_hit)*100), 2)
mydb-# FROM pg_statio_user_tables
mydb-# WHERE(toast_blks_read+toast_blks_hit)>0
mydb-# UNION
mydb-# SELECT
mydb-# 'INDEX:'||relname,
mydb-# (idx_blks_read+idx_blks_hit),
mydb-# ROUND(((idx_blks_hit)::NUMERIC/(idx_blks_read+idx_blks_hit)*100), 2)
mydb-# FROM pg_statio_user_tables
mydb-# WHERE(idx_blks_read+idx_blks_hit)>0;
table_name | heap_hits | heap_buffer_percentage
------------------------------------+--------------+----------------------------------
HEAP:connect_tbl | 890878 | 43.18
HEAP:tblbound_tbl | 43123 | 13.80
HEAP:tblcruel_tbl | 225819 | 6.98
INDEX:connect_tbl | 287224 | 79.82
INDEX:tblbound_tbl | 81640 | 90.28
INDEX:tblcruel_tbl | 253014 | 50.73

--
Yudhvir Singh Sidhu
408 375 3134 cell

In response to

Browse pgsql-performance by date

  From Date Subject
Next Message Craig A. James 2007-06-14 23:12:58 Replication
Previous Message Guillaume Smet 2007-06-14 21:01:54 Re: Parsing VACUUM VERBOSE