Есть ли способ следить за ходом создания индекса в PostgreSQL. Я создаю индекс для большой таблицы, и я хотел бы видеть, как быстро это происходит.
Есть ли способ контролировать это?
postgresql
index
myahya
источник
источник
Ответы:
Согласно странице обслуживания индексов Postgres Wiki , вы можете узнать текущее состояние всех ваших индексов с помощью:
Столбец
num_rows
показывает, сколько строк покрыто вашим индексом иindex_size
будет расти по мере его построения.источник
Таким образом, нет хорошего способа сделать это, но если вам действительно нужно знать ... сначала рассчитайте объем пространства, который должен занимать индекс, исходя из размера данных * строк + накладных расходов. Затем вы можете использовать что-то вроде pfiles или pgtruss, чтобы найти файлы, которые пишутся внутри $ PGDATA; если ваши индексы превышают 1 ГБ, это будет серия файлов, таких как nnnnn.n, где первый набор n является последовательным, а последние n увеличиваются для каждого файла в ГБ. Как только вы знаете, сколько файлов создано, вы можете наблюдать за ростом и выяснить, насколько вы близки к завершению. Грубая оценка, но, возможно, это поможет.
источник
Нет, даже если вы строите его в режиме CONCURRENT. Хотя в прошлом я следил за размером файла в каталоге базы данных, это не очень полезно, так как вы можете только догадываться, насколько большим он будет.
источник
Это станет возможным в следующем выпуске PostgreSQL 12 (должен быть выпущен 3 октября 2019 года).
Подробности смотрите в документации по pg_stat_progress_create_index и в блоге depesz .
источник