Re: DELETE or TRUNCATE? - Mailing list pgsql-general

From chiru r
Subject Re: DELETE or TRUNCATE?
Date
Msg-id CA+RSxMj9V284sRa-Omr0T=-uf+Gn++Vcw71sjWUBzdx0GOUudw@mail.gmail.com
Whole thread Raw
In response to DELETE or TRUNCATE?  (François Beausoleil <francois@teksol.info>)
List pgsql-general
Hi,

Yes,DELETE would be better this case.

The TRUNCATE operation required AccessExclusiveLock on Table before perform TRUNCATE operation.

So,if you the table size is bing,it is batter to do  ANALYZE <Table> after report and VACUUM <table> non-peak(less business) hours.

Regards,
Chiru

On Thu, May 16, 2013 at 7:52 PM, François Beausoleil <francois@teksol.info> wrote:
Hi!

I have a process that replaces the contents of a table. The canonical data store is somewhere else. At the moment, the import looks like this:

CREATE TEMPORARY TABLE markets_import( LIKE x INCLUDING ALL );
COPY markets_import FROM STDIN;
...
\.
-- COPY a bunch of other tables

BEGIN;

TRUNCATE markets;
INSERT INTO markets SELECT * FROM markets_import;
-- do the other tables here as well

COMMIT;

VACUUM ANALYZE markets;

Sometimes, the import process will block on the TRUNCATE because some other query already holds a ShareLock on the markets table, because it's doing a long report. I'm guessing TRUNCATE prevents the use of MVCC, and DELETE would be better in this case? Especially since I'm doing a VACUUM ANALYZE at the end anyway.

Thanks!
François

pgsql-general by date:

Previous
From: Ramsey Gurley
Date:
Subject: Re: Tuning read ahead
Next
From: Thomas Kellerer
Date:
Subject: 9.3 beta and materialized views