Re: Support for REINDEX CONCURRENTLY
Andres Freund <andres@2ndquadrant.com>
From: Andres Freund <andres@2ndquadrant.com>
To: Michael Paquier <michael.paquier@gmail.com>
Cc: Tom Lane <tgl@sss.pgh.pa.us>, Simon Riggs <simon@2ndquadrant.com>, "pgsql-hackers@postgresql.org" <pgsql-hackers@postgresql.org>
Date: 2013-01-26T16:37:23Z
Lists: pgsql-hackers
On 2013-01-25 14:11:39 +0900, Michael Paquier wrote: > On Thu, Jan 24, 2013 at 3:41 AM, Andres Freund <andres@2ndquadrant.com>wrote: > > > I think the usage of list_append_unique_oids in > > ReindexRelationsConcurrently might get too expensive in larger > > schemas. Its O(n^2) in the current usage and schemas with lots of > > relations/indexes aren't unlikely candidates for this feature. > > The easist solution probably is to use a hashtable. > > > I just had a look at the hashtable APIs and I do not think it is adapted to > establish the list of unique index OIDs that need to be built concurrently. > It would be of a better use in case of mapping the indexOids with something > else, like the concurrent Oids, but still even with that the code would be > more readable if let as is. It sure isn't optimal, but it should do the trick if you use the hash_seq stuff to iterate the hash afterwards. And you could use it to map to the respective locks et al. If you prefer other ways to implement it I guess the other easy solution is to add the values without preventing duplicates and then sort & remove duplicates in the end. Probably ends up being slightly more code, but I am not sure. I don't think we can leave the quadratic part in there as-is. Greetings, Andres Freund -- Andres Freund http://www.2ndQuadrant.com/ PostgreSQL Development, 24x7 Support, Training & Services
Commits
Same data as JSON:
GET /api/v1/messages/:b64id/commits
the thread's linked commits as JSON, with link sources.
API reference →
-
Background worker processes
- da07a1e85651 9.3.0 cited
-
Fix assorted bugs in CREATE/DROP INDEX CONCURRENTLY.
- 3c84046490be 9.3.0 cited
-
Work around unportable behavior of malloc(0) and realloc(NULL, 0).
- 09ac603c36d1 9.3.0 cited
-
Properly set relpersistence for fake relcache entries.
- beb850e1d873 9.3.0 cited