Можно ли как-то отследить прогресс добавления колонки в БД?

Да, в PostgreSQL можно отследить прогресс добавления колонки в базу данных.

Перед тем, как объяснить, как это сделать, давайте рассмотрим, как происходит добавление колонки в PostgreSQL. Когда вы выполняете команду ALTER TABLE для добавления новой колонки в таблицу, PostgreSQL должен выполнить несколько шагов, чтобы завершить эту операцию.

Первый шаг - блокировка таблицы, чтобы предотвратить изменения схемы таблицы во время операции добавления колонки. Затем PostgreSQL должен прочитать существующие данные в таблице, скопировать все строки в новую версию таблицы с расширенной схемой, добавить новую колонку со значениями по умолчанию (если указано), а затем перезаписать старую версию таблицы с новой версией.

Чтобы отследить прогресс этой операции, вы можете воспользоваться стандартной функцией PostgreSQL - pg_stat_progress_altertable. Эта функция позволяет вам отслеживать прогресс операции добавления колонки в таблицу.

Вы можете выполнить следующий запрос:

SELECT * FROM pg_stat_progress_altertable;

Этот запрос вернет информацию о выполнении операции ALTER TABLE. В столбце command будет отображаться тип операции, воспроизводимой в настоящее время, а в столбце progress будет показан текущий прогресс операции в процентах.

Кроме того, вам могут быть интересны другие столбцы в этой таблице. Например, столбец 'wait_event' покажет, на каком событии операция ALTER TABLE в настоящее время ожидает.

Также можно использовать функцию pg_stat_progressing_vacuum для отслеживания прогресса работы операции, которая выполняет подтип операции VACUUM, а pg_stat_progressing_cluster для подтипа операции CLUSTER.

Кроме того, вы можете использовать команду watch в командной оболочке psql, чтобы выводить текущий прогресс каждые N секунд. Например, введите следующую команду:

watch 5 SELECT * FROM pg_stat_progress_altertable;

Это позволит вам видеть текущий прогресс операции ALTER TABLE каждые 5 секунд в терминале.

Надеюсь, это поможет вам отследить прогресс добавления колонки в PostgreSQL!