REINDEX and REINDEX CONCURRENTLY in POSTGRESQL DBA
In PostgreSQL, REINDEX
and REINDEX CONCURRENTLY
are used to rebuild corrupt or bloated indexes. They are essential tools for database maintenance and performance tuning.
REINDEX:
In practice indexes can become corrupted due to software bugs or hardware failures. REINDEX
 provides a recovery method.REINDEX
 provides a way to reduce the space consumption of the index by writing a new version of the index without the dead pages.
REINDEX
rebuilds indexes from scratch. It’s commonly used when:
-
Indexes are bloated (due to many
UPDATE
/DELETE
operations). -
Index corruption is suspected.
-
After a major PostgreSQL version upgrade (especially via
pg_upgrade
). -
To improve performance of certain queries.
Parameters
REINDEX INDEX index_name; REINDEX TABLE table_name; REINDEX DATABASE db_name; REINDEX SYSTEM db_name;
REINDEX CONCURRENTLY:
REINDEX CONCURRENTLY
was introduced in PostgreSQL 12+ and allows index rebuilding without blocking reads and writes.
REINDEX CONCURRENTLY
- You want to avoid downtime or user impact while fixing index bloat or corruption.
-
ebuilding a large index with regular
REINDEX
could lock the table for hours.REINDEX CONCURRENTLY
avoids this by allowing writes and reads during the process. - If the table is used by active applications, background jobs, or APIs that can’t be paused.
-
Proactive Maintenance on Production :Schedule this during off-peak hours for non-disruptive index refresh.
REINDEX INDEX CONCURRENTLY index_name; REINDEX TABLE CONCURRENTLY table_name;
At Learnomate Technologies, we provide the best training on PostgreSQL and other database technologies. For more insights, visit our YouTube channel. Don’t forget to check out our website for more details about our training programs. Follow my Medium account @ankush.thavali for more articles and updates.