From: | "Jim C(dot) Nasby" <jim(at)nasby(dot)net> |
---|---|
To: | Jerry Sievers <jerry(at)jerrysievers(dot)com> |
Cc: | pgsql-admin(at)postgresql(dot)org |
Subject: | Re: Manual sys catalog constraint setup to avoid downtime? |
Date: | 2006-11-09 07:11:19 |
Message-ID: | 20061109071118.GF90133@nasby.net |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-admin |
On Tue, Nov 07, 2006 at 11:05:38AM -0500, Jerry Sievers wrote:
> Admins; this is (I assume) a not uncommon scenario).
>
> Suppose you are managing a BIG ugly DB that's in 24x7 production and
> desperately in need of constraints of all types.
>
> (Of course, you inherited this piece of crap and the irresponsible
> designers are long gone :-)
>
> You have verified that the application now honors the new constraints
> because on your R&D DBs, the constraints are in place and no
> constraint violations are occuring.
>
> You can't however get business to sign off on proper constraint
> addition via ALTER TABLE because the tables are huge and this locks
> out concurrent activity for several hours.
>
> My question;
>
> Have any of you setup the constraints by doing manual catalog updates
> and later (or maybe never), gone back and cleaned up the
> non-conforming data using small batch updates or deletes?
>
> Frobing of pg_constraint and pg_depend (at least) would be required.
>
> I'm wondering what non-obvious pitfalls exist here?
>
> Comments?
Use the source, luke!
Hmmm... interesting problem. For some constraints, I think you could
probably handle things pretty well once we have non-blocking index
creation (did that get into 8.2?). I guess the real key there would be
if the constraint creation code will use indexes when checking the
constraints. This would be especially useful for generic CHECK
constraints... if you build an index that has a WHERE clause that
matches the proposed constraint, the backend could just look to see if
there are any entries in the index. If there aren't, you're good to go.
In the meantime, I suggest using triggers to enforce your constraints,
since you can create one without verifying the underlying data.
--
Jim Nasby jim(at)nasby(dot)net
EnterpriseDB http://enterprisedb.com 512.569.9461 (cell)
From | Date | Subject | |
---|---|---|---|
Next Message | Jim C. Nasby | 2006-11-09 07:13:26 | Re: pg_dump and foreign keys troubles |
Previous Message | Jim C. Nasby | 2006-11-09 07:02:09 | Re: Checkpoint Location Format |