25.4. Отметка устаревших снимков и удаление Parquet-файлов #
В Postgres Pro AXE удаление Parquet-файлов выполняется в два этапа. Сначала нужно пометить снимки устаревшими, что исключает связанные Parquet-файлы из аналитических запросов, затем удалить Parquet-файлы из хранилища.
25.4.1. Отметка устаревших снимков #
25.4.1.1. Отметка устаревших снимков на основе даты и времени создания (metastore.expire_snapshot_on_time) #
Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 18.1.
Выполните следующую команду на сервере Postgres Pro AXE:
SELECT metastore.expire_snapshot_on_time('начальная_дата_и_время', 'конечная_дата_и_время');Снимки, созданные между начальной_датой_и_временем и конечной_датой_и_временем, помечаются устаревшими.
Пример 25.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 выполняет следующие действия:
Помечает устаревшими снимки, если их поля
snapshot_timeв таблице метаданныхpga_snapshotнаходятся междуначальной_датой_и_временемиконечной_датой_и_временем.Находит записи в таблице метаданных
pga_data_fileс полямиbegin_snapshot, которые ссылаются на устаревшие снимки, и создаёт связанные записи в таблице метаданныхpga_files_scheduled_for_deletion, если эти записи ещё не были созданы.Примечание
Это не влияет на другие таблицы метаданных, у которых поля
begin_snapshotссылаются на устаревшие снимки.
Пример 25.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 можно создать повторно только в периоды нулевой активности пользователей, чтобы предотвратить возможную потерю данных.
25.4.1.2. Отметка устаревших снимков на основе их идентификаторов (metastore.expire_snapshot_on_ids) #
Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 18.1.
Выполните следующую команду на сервере Postgres Pro AXE:
SELECT metastore.expire_snapshot_on_ids('список_идентификаторов_снимков');Где список_идентификаторов_снимков — это разделённый запятыми список идентификаторов снимков.
Укажите список через литерал или конструктор массива.
Пример 25.6. Возможные форматы значений
'{1,2,3,4}'ARRAY[1,2,3,4]
Идентификаторы снимков содержатся в столбце snapshot_id таблицы метаданных pga_snapshot.
Postgres Pro AXE выполняет следующие действия:
Отмечает устаревшими снимки, если их поля
snapshot_idв таблице метаданныхpga_snapshotравны одному из указанных идентификаторов снимков.Находит записи в таблице метаданных
pga_data_fileс полямиbegin_snapshot, которые ссылаются на устаревшие снимки, и создаёт связанные записи в таблице метаданныхpga_files_scheduled_for_deletion, если эти записи ещё не были созданы.Примечание
Это не влияет на другие таблицы метаданных, у которых поля
begin_snapshotссылаются на устаревшие снимки.
Пример 25.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 можно создать повторно только в периоды нулевой активности пользователей, чтобы предотвратить возможную потерю данных.
25.4.2. Удаление Parquet-файлов (metastore.delete_expired_files) #
Перед выполнением этой инструкции отметьте устаревшими связанные снимки.
Требуемые права: только администратор Postgres Pro AXE. За подробной информацией о хранимых процедурах и правах обратитесь к Разделу 18.1.
Выполните следующую команду на сервере Postgres Pro AXE:
SELECT metastore.delete_expired_files();
Postgres Pro AXE выполняет следующие действия:
Удаляет Parquet-файлы из хранилища, а также удаляет их записи из таблиц метаданных
pga_files_scheduled_for_deletion,pga_data_fileиpga_file_column_statistics.Обновляет статистику для аналитических таблиц и столбцов, связанных с удалёнными Parquet-файлами, в таблицах метаданных
pga_table_statsиpga_table_column_stats.Обновляет поля
column_orderдля столбцов, связанных с удалёнными Parquet-файлами, в таблице метаданныхpga_column.