From: | Richard Huxton <dev(at)archonet(dot)com> |
---|---|
To: | Sergey Konoplev <gray(dot)ru(at)gmail(dot)com> |
Cc: | Stephen Frost <sfrost(at)snowman(dot)net>, Anibal David Acosta <aa(at)devshock(dot)com>, pgsql-performance(at)postgresql(dot)org |
Subject: | Re: unlogged tables |
Date: | 2011-11-14 10:17:58 |
Message-ID: | 4EC0EAD6.9010302@archonet.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-performance |
On 14/11/11 10:08, Sergey Konoplev wrote:
> On 14 November 2011 12:58, Richard Huxton<dev(at)archonet(dot)com> wrote:
>> Because they bypass the transaction-log (WAL), hence unlogged.
>> There's no way to know whether there were partial updates applied when the
>> system restarts.
>
> I probably did not understand the "truncate" meaning correct. It
> truncates all the records of the table or several recent records only?
All.
Let's say you were doing something like "UPDATE unlogged_table SET x=1
WHERE y=2". If a crash occurs during this command, there's no guarantee
that the affected disk pages were all updated. Worse, a single page
might be partially updated or even have rubbish in it (depending on the
nature of the crash).
Without the WAL there's no way to check whether the table is good or
not, or even to know what the last updates were. So - the only safe
thing to do is truncate the unlogged tables.
In the event of a normal shutdown, we can flush all the writes to disk
so we know all the data has been written, so there is no need to truncate.
--
Richard Huxton
Archonet Ltd
From | Date | Subject | |
---|---|---|---|
Next Message | Sergey Konoplev | 2011-11-14 10:39:03 | Re: unlogged tables |
Previous Message | Sergey Konoplev | 2011-11-14 10:08:25 | Re: unlogged tables |