29.4. Отметка устаревших снимков и удаление Parquet-файлов #

29.4.1. Отметка устаревших снимков
29.4.1.1. Отметка устаревших снимков на основе даты и времени создания (metastore.expire_snapshot_on_time)
29.4.1.2. Отметка устаревших снимков на основе их идентификаторов (metastore.expire_snapshot_on_ids)
29.4.2. Удаление Parquet-файлов (metastore.delete_expired_files)

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

29.4.1. Отметка устаревших снимков #

29.4.1.1. Отметка устаревших снимков на основе даты и времени создания (metastore.expire_snapshot_on_time) #

Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 22.1.

Выполните следующую команду:

  SELECT metastore.expire_snapshot_on_time('начальная_дата_и_время', 'конечная_дата_и_время');

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

Пример 29.4. Возможные форматы значений

  • '2025-11-13 12:22:46.123456+03'

  • '2025-11-13 12:22:46+03'

  • '2025-11-13 12:22:46'

  • '2025-11-13'


Дробная часть секунд не должна содержать более 6 цифр.

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

Postgres Pro AXE выполняет следующие действия:

  1. Помечает устаревшими снимки, если их значения snapshot_time в таблице метаданных pga_snapshot находятся между начальной_датой_и_временем и конечной_датой_и_временем.

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

    Примечание

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

Пример 29.5. Выполнение хранимой процедуры metastore.expire_snapshot_on_time

Чтобы отметить устаревшими снимки, созданные за последние 24 часа, используйте функции to_char() и now():

  SELECT metastore.expire_snapshot_on_time(to_char(now() - INTERVAL '1 day', 'YYYY-MM-DD HH24:MI:SS.US TZH:TZM'), to_char(now(), 'YYYY-MM-DD HH24:MI:SS.US TZH:TZM'));

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

  SELECT metastore.expire_snapshot_on_time('', '2025-11-28');

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

  SELECT metastore.expire_snapshot_on_time('2025-11-28', '');

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


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

Важно

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

29.4.1.2. Отметка устаревших снимков на основе их идентификаторов (metastore.expire_snapshot_on_ids) #

Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 22.1.

Выполните следующую команду:

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

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

Укажите список через литерал или конструктор массива.

Пример 29.6. Возможные форматы значений

  • '{1,2,3,4}'

  • ARRAY[1,2,3,4]


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

Postgres Pro AXE выполняет следующие действия:

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

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

    Примечание

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

Пример 29.7. Выполнение хранимой процедуры metastore.expire_snapshot_on_ids

  SELECT metastore.expire_snapshot_on_ids('{1,2,3,4}');
  SELECT metastore.expire_snapshot_on_ids(ARRAY[1,2,3,4,5]);

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

Важно

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

29.4.2. Удаление Parquet-файлов (metastore.delete_expired_files) #

Перед удалением Parquet-файлов необходимо отметить устаревшими связанные снимки.

Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 22.1.

Выполните следующую команду:

SELECT metastore.delete_expired_files();

Postgres Pro AXE выполняет следующие действия:

  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.