Skip site navigation (1) Skip section navigation (2)

Re: I/O on select count(*)

From: Alvaro Herrera <alvherre(at)commandprompt(dot)com>
To: Greg Smith <gsmith(at)gregsmith(dot)com>
Cc: Matthew Wakeling <matthew(at)flymine(dot)org>, pgsql-performance(at)postgresql(dot)org
Subject: Re: I/O on select count(*)
Date: 2008-05-16 20:15:28
Message-ID: 20080516201528.GJ13061@alvh.no-ip.org (view raw or flat)
Thread:
Lists: pgsql-performance
Greg Smith wrote:

> After reading the code and that documentation a bit, the part I'm still  
> not sure about is whether the CLOG entry is created when the XID is  
> assigned and then kept current as the state changes, or whether that 
> isn't even in CLOG until the transaction is committed.  It seems like the 
> latter, but there's some ambiguity in the wording and too many code paths 
> for me to map right now.

pg_clog is allocated in pages of 8kB apiece(*).  On allocation, pages are
zeroed, which is the bit pattern for "transaction in progress".  So when
a transaction starts, it only needs to ensure that the pg_clog page that
corresponds to it is allocated, but it need not write anything to it.

(*) Each transaction needs 2 bits, so on a 8 kB page there is space for
4 transactions/byte * 8 pages * 1kB/page = 32k transactions.

-- 
Alvaro Herrera                                http://www.CommandPrompt.com/
The PostgreSQL Company - Command Prompt, Inc.

In response to

Responses

pgsql-performance by date

Next:From: Scott MarloweDate: 2008-05-16 20:35:24
Subject: Re: Regexps - never completing join.
Previous:From: Craig RingerDate: 2008-05-16 19:25:17
Subject: Re: very slow left join

Privacy Policy | About PostgreSQL
Copyright © 1996-2014 The PostgreSQL Global Development Group