Re: Determining Indexes to Rebuild on new libc

From: Ron <ronljohnsonjr(at)gmail(dot)com>
To: pgsql-admin(at)lists(dot)postgresql(dot)org
Subject: Re: Determining Indexes to Rebuild on new libc
Date: 2022-08-04 14:55:50
Message-ID: 5816758c-a8e5-1076-5c9f-7e59539f0696@gmail.com
Views: Whole Thread | Raw Message | Download mbox | Resend email
Thread:
Lists: pgsql-admin

On 8/4/22 09:29, Don Seiler wrote:
> Good morning,
>
> As we're staring down the eventuality of having to migrate to a newer OS
> (currently on Ubuntu 18.04 LTS), we're preparing for the collation change
> madness that will ensue. We're looking at logical replication but there is
> a lot to unpack there as well given the number of databases and the
> massive size of a few of them. I had been inclined to bite the bullet and
> do logical replication (or dump/restore on smaller DBs) but the timeframe
> for the project is being pushed up so I'm looking for shortcuts where
> possible (obviously without risking DB integrity). This would also give me
> the opportunity for other modifications like enabling data checksums on
> the new DBs that I had been sorely wanting for years now.
>
> One question that gets asked is if we could do physical replication, cut
> over, and then only rebuild indexes that "need it" in order to minimize
> the subsequent downtime. i.e. can we determine which indexes will actually
> have a potential problem. For example, a lot of indexes are on
> text/varchar datatype fields that hold UUID data and nothing more (basic
> alphanumeric characters and hyphens embedded). If we can be certain that
> these fields truly only hold this type of data, could we skip rebuilding
> them after the cutover to a newer OS (eg Ubuntu 22.04 LTS with the newer
> libc collation)?

Join pg_indexes to information_schema to get only the indices with character
fields.

If *ALL* your UUID indices helpfully have "uuid" embedded in their names,
then you can exclude them, too.

Otherwise, you must scan each indexed text field looking for anything
besides low-ASCII characters, and hope that no such data has been added to
since you scanned.

For example: SELECT field_1 from foo where field_1 >= CHR(128);

CHECK constraints would of course also ensure that it can never happen...

--
Angular momentum makes the world go 'round.

In response to

Browse pgsql-admin by date

  From Date Subject
Next Message Jim Mlodgenski 2022-08-04 15:03:36 Re: Determining Indexes to Rebuild on new libc
Previous Message Don Seiler 2022-08-04 14:29:20 Determining Indexes to Rebuild on new libc