'bundle exec rake db:migrate' выполняется долго из-за миграции календаря

ystemd+  7660  0.0  0.3 352060 28284 ?        S    22:31   0:00 /usr/lib/postgresql/13/bin/postmaster -D /etc/postgresql/13/main
systemd+  7667  0.0  0.1 352588  9628 ?        Ss   22:31   0:00 postgres: 13/main: checkpointer 
systemd+  7668  0.3  0.9 352060 78796 ?        Ss   22:31   0:03 postgres: 13/main: background writer 
systemd+  7669  0.0  0.1 352060 13696 ?        Ss   22:31   0:00 postgres: 13/main: walwriter 
systemd+  7670  0.0  0.1 352728 11892 ?        Ss   22:31   0:00 postgres: 13/main: autovacuum launcher 
systemd+  7671  0.0  0.0  67996  5320 ?        Ss   22:31   0:00 postgres: 13/main: stats collector 
systemd+  7672  0.0  0.0 352612  6640 ?        Ss   22:31   0:00 postgres: 13/main: logical replication launcher 
systemd+ 10900 82.0  3.8 487164 317728 ?       Rs   22:33  10:42 postgres: 13/main: discourse discourse [local] DELETE
systemd+ 10901  0.0  0.1 353432 13804 ?        Ss   22:33   0:00 postgres: 13/main: discourse discourse [local] idle

htop показывает, что процесс discourse [local] delete потребляет 100% процессорного времени. У дроплета 8 ГБ оперативной памяти, и в данный момент используется менее 1 ГБ (без учёта буферов).

Операционная система устарела, но это кажется мне очень странным. Памяти и места на диске достаточно, а задача postgres delete выполняется уже более 12 минут. Записей меньше 600 тысяч, а пользователей — менее 4 тысяч, так что база данных не огромная. О, подождите. Каталог postgres_data занимает 28 ГБ.

Я выполнил команду VACUUM VERBOSE ANALYZE;.

Вот что я сделал:

discourse=# SELECT checkpoints_timed, checkpoints_req FROM pg_stat_bgwriter; 
 checkpoints_timed | checkpoints_req 
-------------------+-----------------
                 6 |              20

Сейчас я пытаюсь выполнить параллельную реиндексацию. Возможно, вакуум и реиндексация помогут.