Re: Alter the column data type of the large data volume table.

From: charles meng <xlyybz(at)gmail(dot)com>
To: Olivier Gautherot <ogautherot(at)gautherot(dot)net>
Cc: PostgreSQL General <pgsql-general(at)lists(dot)postgresql(dot)org>
Subject: Re: Alter the column data type of the large data volume table.
Date: 2020-12-04 10:39:22
Message-ID: CAD5cqMLn=p2ML=mqPZmO2deqMe_sVv40gKN5PweeKb2j-KVe8g@mail.gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-general

Hi Olivier,

My PG version is 10.
Anyway, thanks a lot for your help.

Best regards.

Olivier Gautherot <ogautherot(at)gautherot(dot)net> 于2020年12月4日周五 下午6:14写道:

> Hi Charles,
> On 04-12-2020 9:44, Olivier Gautherot wrote:
>
> Hi Charles,
>
> On Fri, Dec 4, 2020 at 9:12 AM charles meng <xlyybz(at)gmail(dot)com> wrote:
>
>> What I mean is that it will take a lot of time to complete all data
>> processing.I have to say that it is a good solution to adjust the column
>> type without affecting online users.
>>
>> I found a tool on github, see the link below, unfortunately, this is for
>> MySQL...
>>
>> https://github.com/github/gh-ost
>>
>
> MySQL has its own strategy with regard to column handling so what works
> there does not necessarily fit here.
>
> There are some good ideas in this thread but I would start with a few
> checks:
>
> 1) What version of PG are you using ?
>
> 2) If you can try on your current setup (not necessarily in Production) to
> add a column typed bigint - if it is recent enough it will be a simple
> catalog update. Michael's suggestion is viable
>
> 3) Given the massive number of rows, I would update as suggested,
> progressively in batches of a few tens of thousands. Make sure you commit
> and vacuum after each to retrieve the space (or you may end up with a
> storage space issue in addition to all the rest). In the meantime, add a
> trigger to set the new column to the index value. Once the new column is
> complete, drop the old column and set the new one as primary key (it may
> take a while to recalculate the index).
>
> 4) If your table is still growing, I would definitely look into
> partitioning as it can hardly make things worse.
>
> 5) If you're brave enough, convert your current table as a partition
> (rename it to something like table_hist), duplicate the table model under
> the same name as now (adjusting the primary key type) and set the INHERITS
> on the primary key range. The inheritance should take care of the type
> conversion (haven't tried it but it's worth a try). If it works, you will
> reach your goal without downtime or significant overhead.
>
> Sorry, just tried this one and it failed: type mismatch.
>
> Cheers
> --
> Olivier Gautherot
>
>

In response to

Browse pgsql-general by date

  From Date Subject
Next Message Aravindhan Krishnan 2020-12-04 11:12:28 Re: postgres-10 with FIPS
Previous Message Laurenz Albe 2020-12-04 10:28:19 Re: Number of parallel workers chosen by the optimizer for parallel append