PostgreSQL allows you to create your indexes
concurrently
so that your table isn’t locked as the index builds. This allows you to
avoid taking a performance hit when adding a new index to a large table.
Yesterday, I submitted a pull request to
Rails that as merged in this
morning that allows you to add concurrent indexes through the
add_index method in your migrations. To create an index concurrently,
you add the algorithm: :concurrently option to the add_index call
add_index :table, :column, algorithm: :concurrently
A side effect of this commit is that it also enables the algorithm
option for MySQL too, so MySQL users can create indexes using DEFAULT,
INPLACE or COPY algorithm when creating indexes.
Postgres_ext gains concurrent index support as well
This morning I added support for concurrent indexes to
postgres_ext as well, using
the same syntax as the Rails 4 example above. The 0.3.0 version of
postgres_ext was released, which contains this, and a slew of other
improvements as
well.
One thing to note, the index_type option for add_index has been
renamed to using to match Rails 4.
If you have any features you want to see in postgres_ext or have any issues, open an issue!