Re: [SQL] Newbie dbadmin out of his league

From: Tim Pizey <tim(at)paneris(dot)co(dot)uk>
To: Herouth Maoz <herouth(at)oumail(dot)openu(dot)ac(dot)il>
Cc: pgsql-sql(at)postgreSQL(dot)org, bloomsbury_development(at)messageboards(dot)paneris(dot)org
Subject: Re: [SQL] Newbie dbadmin out of his league
Date: 1999-09-02 10:36:17
Message-ID: 3.0.3.32.19990902113617.00732f1c@popmail.dircon.co.uk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-sql

At 18:45 01/09/99 +0300, Herouth Maoz wrote:
>At 00:19 +0300 on 28/08/1999, Tom Lane wrote:
>
>
>> > Presumably I again have to take control of the key values,
>> > drop the index
>> > copy from tab delimited file containing hard ids
>> > create id sequence
>> > create index
>> > modify id definition
>>
>> Yup, that's about what you need to do. You can leave the "DEFAULT"
>> clause where it is, since it won't be invoked during a COPY that's
>> supplying non-default values for the ID column. (A good thing too,
>> since I don't think we support ALTER TABLE ADD DEFAULT...)
>
>Hmmm. If it were I, I would have tackled it in a slightly different way:
>
>COPY the data into a temporary table, that doesn't have the id numbers at
>all. Thus you don't have to have a counter on the client side, that knows
>the last id that's already on the table, etc, etc., and you also don't have
>to transfer several extra bytes per row through the postgres port.
>
Does the volume of data really matter, I was assuming that it was the
indexing that was taking the time. Many of my field sizes are generous and
padded with spaces.

>Then, when you have a temp table, you can add the values to the main table
>with an
>
>INSERT INTO main_table (field1, field2, field3)
>SELECT field1, field2, field3
>FROM temp_table;
>
>If you don't mention the field that carries the default in this INSERT
>statement, it will invoke the default. Dropping the index may still be a
>good idea. The temp table shouldn't have an index anyways.
>
>This would save you at least the three last steps in your "recipe".
>
Thanks a lot for this, I will try it next.

At the moment the job is going much faster, but is getting stuck on the
index creation.

I am turning off fsync (-o -F) during the copy, which copies all 2000000
records in one COPY. Should I keep it off during the index creation?

It looks increasingly as though this process is going to take an un
acceptable amount of time and resources on a live server.

What is the recommended way of creating a db on another machine and then
hot swapping the live and the new dbs?

yours
Tim Pizey
Happy to take part:/
/www.paneris.co.uk/

In response to

Browse pgsql-sql by date

  From Date Subject
Next Message José Soares 1999-09-02 12:29:26 Re: [GENERAL] Max function on Timestamp
Previous Message Tim Pizey 1999-09-02 10:26:34 Re: [SQL] Newbie dbadmin out of his league