I'm running 2 tests now, one, where I'm doing the traditional indexing, in sequence. The server isn't doing anything else, so I should get pretty accurate results. Test 2 will win all the create index sessions in separate sessions in parallel (echo "create index ..."|psql ... & ) once the 'serial build' test is done.
Maybe, in a future release, somebody will develop something that can create indexes as inactive and have a build tool build and activate them at the same time. Food for thought? On Apr 9, 2011, at 13:10 , Tom Lane wrote: > Chris Ruprecht <ch...@ruprecht.org> writes: >> I have a table that I need to rebuild indexes on from time to time (records >> get loaded before indexes get build). >> To build the indexes, I use 'create index ...', which reads the entire table >> and builds the index, one at a time. >> I'm wondering if there is a way to build these indexes in parallel while >> reading the table only once for all indexes and building them all at the >> same time. Is there an index build tool that I missed somehow, that can do >> this? > > I don't know of any automated tool, but if you launch several CREATE > INDEX operations on the same table at approximately the same time (in > separate sessions), they should share the I/O required to read the > table. (The "synchronized scans" feature guarantees this in recent > PG releases, even if you're not very careful about starting them at > the same time.) > > The downside of that is that you need N times the working memory and > you will have N times the subsidiary I/O for sort temp files and writes > to the finished indexes. Depending on the characteristics of your I/O > system it's not hard to imagine this being a net loss ... but it'd be > interesting to experiment. > > regards, tom lane -- Sent via pgsql-performance mailing list (pgsql-performance@postgresql.org) To make changes to your subscription: http://www.postgresql.org/mailpref/pgsql-performance