Re: How many insert + update should one transaction handle?

From: Gnanavel S <s(dot)gnanavel(at)gmail(dot)com>
To: Yonatan Ben-Nes <da(at)canaan(dot)co(dot)il>
Cc: "pgsql-general(at)postgresql(dot)org" <pgsql-general(at)postgresql(dot)org>
Subject: Re: How many insert + update should one transaction handle?
Date: 2005-09-27 04:15:25
Message-ID: eec3b03c05092621154761a016@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On 9/27/05, Jim C. Nasby <jnasby(at)pervasive(dot)com> wrote:
>
> On Mon, Sep 26, 2005 at 08:41:03PM +0200, Yonatan Ben-Nes wrote:
>
> > Anyway I saw the idea:
> > BEGIN;
> > CREATE new_table;
> > SELECT INTO new_table * FROM temp_table;
> > DROP TABLE table;

Instead of dropping it here, just rename to a different name and then after
doing the next step drop the table.

> ALTER TABLE new_table RENAME TO table;
> > COMMIT;

you can do like this,

BEGIN;
CREATE new_table;
SELECT INTO new_table * FROM temp_table;
ALTER TABLE table RENAME TO temp_table_orig;
ALTER TABLE new_table RENAME TO table;
COMMIT;
drop table temp_table_orig;

>
> > Where if I understood correctly "table" is the final table, "temp_table"
> > is the table that receive all the proccess and at the end of it got
> > 10mil delete tuples and 5mil active and finally "new_table" is the
> > receipent of all of the active tuples from "temp_table".
> >
> > Its looking quite promising to me but I did alittle check and saw that
> > between the drop table command & the commit I get a lock on the table
> > (obvious but problematic to a 24/7 site) so im wondering to myself how
> > much time such a transaction will take from the drop command point?
> >
> > If users wont be able to access the table for some extremly small amount
> > of time (less then a second obviously) then though I dont like it much
> > it is better then running a vacuum full which will slow all my server
> > for a considerable amount of time...
> >
> > So anyone know how much time does such a process take? (tried to explain
> > analyze it with no success :)).
>
> Based on http://lnk.nu/developer.postgresql.org/44b.c, line 1478 on,
> there's not a lot that happens during the ALTER TABLE. Likewise DROP
> (line 517) doesn't do much either. So basically, anything trying to
> access the old table will block for a while waiting for the update to
> happen.
>
> But keep in mind that 'a while' will depend on what's happening on the
> system. Imagine...
>
> Start long transaction involving table
> Run code above; drop aquires lock on table
>
> Everything else against table will now block, waiting for the DROP to
> happen.
> --
> Jim C. Nasby, Sr. Engineering Consultant jnasby(at)pervasive(dot)com
> Pervasive Software http://pervasive.com work: 512-231-6117
> vcard: http://jim.nasby.net/pervasive.vcf cell: 512-569-9461
>
> ---------------------------(end of broadcast)---------------------------
> TIP 6: explain analyze is your friend
>

--
with regards,
S.Gnanavel
Satyam Computer Services Ltd.

In response to

Browse pgsql-general by date

  From Date Subject
Next Message George Essig 2005-09-27 04:20:04 Re: RI_ConstraintTrigger question
Previous Message Qingqing Zhou 2005-09-27 02:16:53 Re: [SQL] add column if doesn't exist (fwd)