Re: Temporary tables and disk activity

From: Phil Endecott <spam_from_postgresql_general(at)chezphil(dot)org>
To: pgsql-general(at)postgresql(dot)org
Cc: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
Subject: Re: Temporary tables and disk activity
Date: 2004-12-13 18:58:13
Message-ID: 41BDE645.7020805@chezphil.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Tom,

I thought of a quicker way to investiage this than strace and did an ls
-lt in the data directory and looked up the tables that seem to change
on every transaction in pg_class. They are the catalog tables:

# ls -lt /var/lib/postgres/data/base/17142/
total 530108
-rw------- 1 postgres postgres 6488064 Dec 13 18:44 1259
-rw------- 1 postgres postgres 3670016 Dec 13 18:44 1247
-rw------- 1 postgres postgres 38715392 Dec 13 18:44 1249
-rw------- 1 postgres postgres 3317760 Dec 13 18:44 16390
-rw------- 1 postgres postgres 13467648 Dec 13 18:44 16599
-rw------- 1 postgres postgres 16957440 Dec 13 18:44 16610
-rw------- 1 postgres postgres 4808704 Dec 13 18:44 16613
-rw------- 1 postgres postgres 17072128 Dec 13 18:44 16624
-rw------- 1 postgres postgres 14352384 Dec 13 18:44 16625
-rw------- 1 postgres postgres 483328 Dec 13 18:44 16630
-rw------- 1 postgres postgres 2228224 Dec 13 18:44 16652
-rw------- 1 postgres postgres 5742592 Dec 13 18:44 16653
-rw------- 1 postgres postgres 63578112 Dec 13 18:44 16609
-rw------- 1 postgres postgres 13787136 Dec 13 18:44 16614
-rw------- 1 postgres postgres 483328 Dec 13 18:44 16629

=> select pc.relfilenode, pc.relname, pn.nspname from pg_class pc join
pg_namespace pn on (pc.relnamespace=pn.oid) where pc.relfilenode in
('1259','1247','1249','16390','16599','16610','16613','16624','16625','16630','16652','16653','16609','16614','16629');

relfilenode | relname | nspname
-------------+---------------------------------+------------
16599 | pg_depend | pg_catalog
16390 | pg_index | pg_catalog
1259 | pg_class | pg_catalog
1249 | pg_attribute | pg_catalog
1247 | pg_type | pg_catalog
16653 | pg_type_typname_nsp_index | pg_catalog
16652 | pg_type_oid_index | pg_catalog
16630 | pg_index_indexrelid_index | pg_catalog
16629 | pg_index_indrelid_index | pg_catalog
16625 | pg_depend_reference_index | pg_catalog
16624 | pg_depend_depender_index | pg_catalog
16614 | pg_class_relname_nsp_index | pg_catalog
16613 | pg_class_oid_index | pg_catalog
16610 | pg_attribute_relid_attnum_index | pg_catalog
16609 | pg_attribute_relid_attnam_index | pg_catalog
(15 rows)

Does this make sense? I imagine that the temporary table is being added
to these tables and then removed again.

I do have quite a large number of tables in the database; I have one
schema per user and of the order of 20 tables per user and 200 users. I
can imagine that in a system with fewer tables this would be
insignificant, yet in my case it seems to be writing of the order of a
megabyte in each 5-second update.

I should mention that I ANALYSE the temporary table after creating it
and before using it for anything; I'm not sure if this does any good
but I put it in as it "couldn't do any harm".

Any thoughts?

Regards,

Phil.

Tom Lane wrote:
> Phil Endecott <spam_from_postgresql_general(at)chezphil(dot)org> writes:
>
>>Tom Lane wrote:
>>
>>>In principle, therefore, the kernel could hold temp table data in its
>>>own disk buffers and never write it out to disk until the file is
>>>deleted. In practice, of course, the kernel doesn't know the data is
>>>transient and will probably push it out whenever it has nothing else to
>>>do.
>
>
>>That makes sense. I suspect that I am seeing writes every 5 seconds,
>>which looks like bdflush / update.
>
>
>>But my connections normally only last for a second at most. In this
>>case, surely the table would normally have been deleted before the
>>kernel decided to write anything.
>
>
> That does seem a bit odd, then. Can you strace a typical backend
> session and see if it's doing anything to force a disk write?
>
> (I'm too lazy to go check right now whether 7.4 handled temp tables
> exactly the same as CVS tip does. I think it's the same but I might
> be wrong.)
>
> regards, tom lane
>
>

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Bruno Wolff III 2004-12-13 18:59:05 Re: partial index on boolean, problem with v8.0.0rc1
Previous Message Tom Lane 2004-12-13 18:46:13 Re: partial index on boolean, problem with v8.0.0rc1