INTEGRITY Документация

Обслуживание таблиц

Обслуживание таблиц включает набор операций, которые с течением времени сохраняют производительность и экономичность ваших таблиц Apache Iceberg. По мере записи, обновления и удаления данных в таблицах накапливаются метаданные и файлы, способные со временем снижать производительность запросов.

R2 Data Catalog автоматизирует две важные операции обслуживания:

Без регулярного обслуживания в таблицах могут возникать следующие проблемы:

Включив автоматическое обслуживание таблиц, вы гарантируете, что R2 Data Catalog будет поддерживать таблицы в оптимизированном состоянии без необходимости запускать этот процесс вручную.

Зачем нужна компактификация?

Каждая операция записи в Apache Iceberg ↗, независимо от объема, приводит к появлению новой партии файлов. Со временем количество файлов может расти неограниченно. Это может привести к следующему:

Автоматическое уплотнение в R2 Data Catalog

Теперь R2 Data Catalog может управление сжатием для таблиц Apache Iceberg, хранящихся в R2. Когда эта функция включена, сжатие запускается автоматически и объединяет новые файлы, которые ещё не были сжаты.

Имена уплотнённых файлов начинаются с префикса compacted- в /data/ каталог соответствующей таблицы.

Примеры

# Enable catalog-level compaction (all tables)
npx wrangler r2 bucket catalog compaction enable my-bucket \
  --target-size 128 \
  --token $R2_CATALOG_TOKEN

# Enable compaction for a specific table
npx wrangler r2 bucket catalog compaction enable my-bucket my-namespace my-table \
  --target-size 256

# Disable catalog-level compaction
npx wrangler r2 bucket catalog compaction disable my-bucket

# Disable compaction for a specific table
npx wrangler r2 bucket catalog compaction disable my-bucket my-namespace my-table

Подробнее об управлении уплотнением см. в Управление каталогами.

Выберите подходящий целевой размер файла

Вы можете настроить целевой размер файла для компактификации. В настоящее время минимальное значение составляет 64 MB, а максимальное 512 MB.

У разных вычислительных движков разный оптимальный размер файлов, поэтому уточняйте информацию в их документации.

Компромисс между производительностью зависит от сценария использования. Например, запросы, возвращающие небольшой объем данных, могут выполняться быстрее при работе с файлами меньшего размера, поскольку крупные файлы могут привести к чтению лишних данных.

Зачем нужно истечение срока действия снимков?

Любая запись в таблицу Iceberg, будь то вставка, обновление или удаление, создаёт новый снимок. Со временем количество таких снимков может расти и приводить к снижению производительности:

Автоматическое истечение срока действия снимков в R2 Data Catalog

Настройка истечения срока действия снимков

Истечение срока действия снимков использует два параметра для определения того, какие снимки удалить:

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

Примеры

# Enable snapshot expiration for entire catalog
# Keep minimum 10 snapshots, expire those older than 7 days
npx wrangler r2 bucket catalog snapshot-expiration enable my-bucket \
  --token $R2_CATALOG_TOKEN \
  --older-than-days 7 \
  --retain-last 10

# Enable for specific table
# Keep minimum 5 snapshots, expire those older than 2 days
npx wrangler r2 bucket catalog snapshot-expiration enable my-bucket my-namespace my-table \
  --token $R2_CATALOG_TOKEN \
  --older-than-days 2 \
  --retain-last 5

# Disable snapshot expiration for a catalog
npx wrangler r2 bucket catalog snapshot-expiration disable my-bucket

Выберите подходящую политику хранения

Разным рабочим нагрузкам требуются разные стратегии хранения снимков:

Это общие рекомендации, при использовании учитывайте следующее:

Текущие ограничения