Search Postgresql Archives

Re: DELETE or TRUNCATE?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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@xxxxxxxxxxx> 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


[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Postgresql Jobs]     [Postgresql Admin]     [Postgresql Performance]     [Linux Clusters]     [PHP Home]     [PHP on Windows]     [Kernel Newbies]     [PHP Classes]     [PHP Books]     [PHP Databases]     [Postgresql & PHP]     [Yosemite]
  Powered by Linux