20.3. Удаление Parquet-файлов #

В Postgres Pro AXE удаление Parquet-файлов выполняется в два этапа. Сначала снимки, на которые ссылаются записи из таблицы метаданных pga_data_file, необходимо отметить как устаревшие, чтобы исключить связанные Parquet-файлы из аналитических запросов. После этого Parquet-файлы можно удалять.

Перед выполнением этой инструкции убедитесь, что вам назначена роль metastore_admin. За подробной информацией обратитесь к Главе 14.

Чтобы удалить Parquet-файлы:

  1. Отметьте снимки как устаревшие одним из следующих способов:

    • Чтобы отметить снимки, созданные до определённой даты и времени, как устаревшие, выполните следующий запрос:

        SELECT metastore.expire_snapshot(пороговая_дата_и_время);

      Где пороговая_дата_и_время — это пороговое значение для даты и времени создания снимка.

      Дата и время создания снимка содержатся в столбце snapshot_time таблицы метаданных pga_snapshot.

      Поддерживаемые форматы даты и времени:

      • Дата в формате гггг-мм-дд.

        Пример 20.3.

        2024-11-28


      • Дата в формате гггг-мм-дд и время в формате чч:мм:сс.

        Пример 20.4.

        2025-11-28 12:22:46


      • Дата в формате гггг-мм-дд и время в формате чч:мм:сс с указанием часового пояса.

        Пример 20.5.

        2025-11-28 12:22:46+03


      • Дата в формате гггг-мм-дд и время в формате чч:мм:сс.сссссс с указанием часового пояса, где дробная часть секунд имеет не более 6 знаков.

        Пример 20.6.

        2025-11-28 12:22:46.123456+03


      Пример 20.7.

        SELECT metastore.expire_snapshot('2025-11-13 12:22:46.123456+03');

    • Чтобы отметить снимки с определёнными идентификаторами как устаревшие, выполните следующий запрос:

        SELECT metastore.expire_snapshot('[список_идентификаторов_снимков]');

      Где список_идентификаторов_снимков — это разделённый запятыми список идентификаторов снимков.

      Идентификаторы снимков содержатся в столбце snapshot_id таблицы метаданных pga_snapshot.

      Пример 20.8.

        SELECT metastore.expire_snapshot('[1,2,3,4]');

    После выполнения этого запроса pgpro_metastore выполняет следующие действия:

    1. Отмечает снимки как устаревшие, если их записи из таблицы метаданных pga_snapshot имеют значения snapshot_time, которые меньше, чем пороговая_дата_и_время, или имеют значения snapshot_id, которые равняются одному из указанных идентификаторов снимков.

    2. Находит записи в таблице метаданных pga_data_file со значениями begin_snapshot, которые ссылаются на устаревшие снимки, и создаёт связанные записи в таблице метаданных pga_files_scheduled_for_deletion, если эти записи не были созданы при предыдущих вызовах expire_snapshot.

      Примечание

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

  2. Повторно создайте представления Postgres Pro из аналитических таблиц, связанных с Parquet-файлами, чтобы исключить эти файлы из аналитических запросов.

    Важно

    Повторное создание представлений Postgres Pro возможно только в периоды отсутствия пользовательской активности. Это сделано для предотвращения потери данных.

  3. Удалите Parquet-файлы:

    SELECT metastore.delete_expired_files();

    После выполнения этого запроса pgpro_metastore выполняет следующие действия:

    1. Удаляет Parquet-файлы из хранилища , а также удаляет связанные записи из таблиц метаданных pga_files_scheduled_for_deletion, pga_data_file и pga_file_column_statistics.

    2. Пересчитывает статистику для записей, связанных с удалёнными Parquet-файлами, в таблицах метаданных pga_table_stats и pga_table_column_stats.

    3. Пересчитывает значения column_order для записей, связанных с удалёнными Parquet-файлами, в таблице метаданных pga_column.