Re: Partitioning an existing table

From: Vick Khera <vivek(at)khera(dot)org>
To: PG-General Mailing List <pgsql-general(at)postgresql(dot)org>
Subject: Re: Partitioning an existing table
Date: 2011-04-25 14:10:20
Message-ID: BANLkTinFZk7RgsG111s_teM50EoF7cq93Q@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

On Mon, Apr 25, 2011 at 6:46 AM, Phoenix Kiula <phoenix(dot)kiula(at)gmail(dot)com>wrote:

> I could create a new parent table with child tables, and then INSERT
> all these millions of rows to put them into the right partition. But
> is that recommended?
>

I did this twice (several years ago). Basically, you create your partitions
and set up the necessary triggers you want (I re-write the app to insert
directly into the correct partition). Then all new data starts going into
the partitions. Next, write a program that loops over the current master
table, and moves the data into each partition some small hunk at a time, in
a transaction. This can take a long time. For us, it took about 7 days to
move O(100m) rows. Then, when you're done, truncate the master table, and
enforce that no new data is allowed to be inserted into it.

If you can, of course, try this out on a spare copy of that table.

In response to

Responses

Browse pgsql-general by date

  From Date Subject
Next Message Adrian Klaver 2011-04-25 14:23:50 Re: pipe line error (psql command)
Previous Message Jean Pereira 2011-04-25 13:59:40 Problem with sorting on PostgreSQL 9.0.3