Re: why select count(*) consumes wal logs

From: Tom Lane <tgl(at)sss(dot)pgh(dot)pa(dot)us>
To: Ravi Krishna <srkrishna1(at)aol(dot)com>
Cc: pgsql-general(at)lists(dot)postgresql(dot)org
Subject: Re: why select count(*) consumes wal logs
Date: 2018-11-06 17:40:11
Message-ID: 26567.1541526011@sss.pgh.pa.us
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Ravi Krishna <srkrishna1(at)aol(dot)com> writes:
> I loaded 133 million rows to a wide table (more than 100 cols) via COPY. The table has
> no index at this time. Since I am the only user I don't see any other activity.
> Now when I run select count(*) on the table where I just loaded data, it runs for ever,
> more than 10min and still running. Intrigued, I checked locks and saw nothing. Then I noticed something
> strange. When select count(*) runs, PG is writing to wal_logs, and that too a large amount. Why?

That represents setting the yes-this-row-is-committed hint bits on the
newly loaded rows. The first access to any such row will set that bit,
whether it's a select or a VACUUM or whatever.

regards, tom lane

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Tom Lane 2018-11-06 17:53:31 Re: Trouble Upgrading Postgres
Previous Message Kumar, Virendra 2018-11-06 17:38:38 RE: why select count(*) consumes wal logs