Как узнать завершилось ли индексирование БД?

В PostgreSQL существует несколько способов узнать, завершилось ли индексирование базы данных. Вот некоторые из них:

1. С помощью запросов к каталогу системной информации (system catalog):
Вы можете проверить состояние индексов, просматривая таблицу pg_indexes, которая содержит информацию обо всех индексах в базе данных. Запрос будет выглядеть примерно так:

SELECT tablename, indexname, indexdef, indisready
FROM pg_indexes
WHERE schemaname = 'public';

В этом запросе мы выбираем название таблицы (tablename), название индекса (indexname), определение индекса (indexdef) и флаг "готовности" индекса (indisready) для всех индексов в схеме "public".
Флаг "готовности" указывает, завершилось ли индексирование (true - завершено, false - не завершено).

2. С помощью просмотра активных процессов:
Вы можете использовать команду "pg_stat_activity", чтобы просмотреть активные процессы в базе данных. Запрос будет выглядеть примерно так:

SELECT datname, query, state
FROM pg_stat_activity
WHERE query ILIKE '%CREATE INDEX%';

Этот запрос выберет все активные процессы, содержащие выражение "CREATE INDEX" в своем запросе. Вы можете использовать этот запрос, чтобы проверить, выполняется ли индексирование в данный момент.

3. С помощью команды "pg_stat_progress_create_index":
В PostgreSQL 9.6 и более поздних версиях можно использовать представление pg_stat_progress_create_index для отслеживания прогресса создания индекса. Запрос будет выглядеть примерно так:

SELECT * FROM pg_stat_progress_create_index;

Этот запрос показывает информацию о текущем прогрессе создания индекса, включая название таблицы, название индекса, количество обработанных блоков и общее количество блоков.

4. С помощью системного журнала:
Вы также можете проверить журнал PostgreSQL (например, файл "postgresql.log" или "pg_log/postgresql-x.log") на наличие записей о создании индексов. Если процесс индексирования успешно завершен, вы увидите соответствующие записи в журнале.

Эти методы позволяют узнать, завершилось ли индексирование базы данных PostgreSQL. В зависимости от вашей ситуации и предпочтений вы можете выбрать один или несколько из них для проверки состояния индексирования.