View Source Oban.Plugins.Reindexer (Oban v2.11.0)

Periodically rebuild indexes to minimize database bloat.

Over time various Oban indexes may grow without VACUUM cleaning them up properly. When this happens, rebuilding the indexes will release bloat.

The plugin uses REINDEX with the CONCURRENTLY option to rebuild without taking any locks that prevent concurrent inserts, updates, or deletes on the table.

Note: This plugin requires the CONCURRENT option, which is only available in Postgres 12 and above.

Using the Plugin

By default, the plugin will reindex once a day, at midnight UTC:

config :my_app, Oban,
  plugins: [Oban.Plugins.Reindexer],
  ...

To run on a different schedule you can provide a cron expression. For example, you could use the "@weekly" shorthand to run once a week on Sunday:

config :my_app, Oban,
  plugins: [{Oban.Plugins.Reindexer, schedule: "@weekly"}],
  ...

Options

  • :schedule — a cron expression that controls when to reindex. Defaults to "@midnight".

  • :timezone — which timezone to use when evaluating the schedule. To use a timezone other than the default of "Etc/UTC" you must have a timezone database like tzdata installed and configured.

Link to this section Summary

Functions

Returns a specification to start this module under a supervisor.

Link to this section Types

Specs

option() ::
  {:conf, Oban.Config.t()} | {:name, GenServer.name()} | {:schedule, binary()}

Link to this section Functions

Returns a specification to start this module under a supervisor.

See Supervisor.