Blog

Лучшие практики#3

ЧАСТЬ 3: Загрузка данных

Рекомендации по использованию

  • Обязательно: Не используйте INSERT INTO VALUES() для загрузки данных в production-среде.
  • Рекомендуется: Минимальный интервал между пакетами загрузки - 5 секунд.
  • Рекомендуется: Для сценариев обновления в таблицах с первичным ключом рассмотрите возможность включения persistent index, но только если у вас есть высокопроизводительные накопители, такие как NVMe SSD.
  • Рекомендуется: Для сценариев с частыми ETL-операциями (insert into select) рассмотрите возможность включения функции Spill to disk, чтобы избежать превышения лимитов памяти.
  • Рекомендуется: Для пакетной загрузки в партиционированную таблицу, особенно при загрузке больших объемов исторических данных из Iceberg/Hudi/Hive, лучше выполнять загрузку по одной партиции, чтобы избежать создания мелких файлов.

Жизненный цикл данных

  • Рекомендуется: Используйте TRUNCATE для удаления данных вместо DELETE.
  • Обязательно: Полный синтаксис обновления доступен только в версии 3.0 и выше модели с первичным ключом; запрещены высоконагруженные обновления, рекомендуется выполнять операции обновления с интервалом не менее одной минуты.
  • Обязательно: При использовании DELETE для удаления данных обязательно указывайте условие WHERE, а также запрещены параллельные удаления. Например, вместо выполнения 1000 отдельных запросов DELETE FROM tbl1 WHERE id=1 используйте DELETE FROM tbl1 WHERE id IN (1,2,3,...,1000).
  • Обязательно: Операция DROP по умолчанию перемещает данные в корзину FE, где они хранятся 86400 секунд (1 день), в течение которых их можно восстановить для предотвращения случайного удаления. Это поведение контролируется параметром catalog_trash_expire_second. Через день файлы перемещаются в корзину BE, где по умолчанию хранятся 259200 секунд (3 дня).