• О Милвусе
  • Начать
  • Концепции
  • Руководство пользователя
  • Импорт данных
  • Инструменты искусственного интеллекта
  • Руководство по администрированию
  • Инструменты
  • Интеграции
  • Учебники
  • Вопросы и ответы
  • API Reference

Лучшие практики для многоуровневого хранения данныхCompatible with Milvus 2.6.4+

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

Перед началом работы

  • Milvus v2.6.4 или более поздняя версия

  • QueryNodes должны иметь выделенные локальные ресурсы (память и диск). Совместное использование ресурсов может исказить оценку кэша и привести к ошибкам при выселении.

Выберите правильную стратегию

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

Цель

Рекомендуемая направленность

Ключевой механизм

Минимизация задержки при первом запросе

Предварительная загрузка критических полей

Разминка

Эффективная работа с крупномасштабными данными

Загрузка по требованию

Ленивая загрузка + частичная загрузка

Поддерживайте долгосрочную стабильность

Предотвращение переполнения кэша

Выселение

Баланс производительности и емкости

Комбинируйте предварительную нагрузку и динамическое кэширование

Гибридная конфигурация

Сценарий 1: поиск в режиме реального времени с низкой задержкой

Когда использовать

  • Задержка запроса критична (например, рекомендации в реальном времени или ранжирование поиска)

  • К основным векторным индексам и скалярным фильтрам обращаются часто

  • Постоянная производительность важнее скорости запуска

Рекомендуемая конфигурация

# milvus.yaml
queryNode:
  segcore:
    tieredStorage:
      warmup:
        # scalar field/index warm-up to eliminate first-time latency
        scalarField: sync
        scalarIndex: sync
        # warm-up of vector fields is disabled (if the original vector is not required)
        vectorField: disable
        # vector indexes warm-up to elminate first-time latenct
        vectorIndex: sync
      # enable cache eviction, and also turn on background asynchronous eviction
      # to reduce the triggering of synchronous eviction.
      evictionEnabled: true
      backgroundEvictionEnabled: true
      memoryLowWatermarkRatio: 0.75
      memoryHighWatermarkRatio: 0.8
      diskLowWatermarkRatio: 0.75
      diskHighWatermarkRatio: 0.8
      # no expiration time, which avoids frequent reloading
      cacheTtl: 0

Обоснование

  • Прогрев устраняет задержку при первом обращении к скалярным и векторным индексам с высокой частотой.

  • Фоновое вытеснение поддерживает стабильное давление на кэш, не блокируя запросы.

  • Отключение TTL кэша позволяет избежать ненужных перезагрузок для "горячих" данных.

Сценарий 2: автономный пакетный анализ

Когда использовать

  • Высокая устойчивость к задержкам запросов

  • Рабочие нагрузки включают массивные наборы данных или множество сегментов.

  • Пропускная способность и производительность приоритетнее скорости отклика.

Рекомендуемая конфигурация

# milvus.yaml
queryNode:
  segcore:
    tieredStorage:
      enabled: true
      warmup:
        # disable scalar field/index warm-up to speed up loading
        scalarField: disable
        scalarIndex: disable
        # disable vector field/index warm-up to speed up loading
        vectorField: disable
        vectorIndex: disable
      # enable cache eviction, and also turn on background asynchronous eviction
      # to reduce the triggering of synchronous eviction.
      evictionEnabled: true
      backgroundEvictionEnabled: true
      memoryLowWatermarkRatio: 0.7
      memoryHighWatermarkRatio: 0.85
      diskLowWatermarkRatio: 0.7
      diskHighWatermarkRatio: 0.85
      # use 1 day expiration to clean unused cache
      cacheTtl: 86400

Обоснование

  • Отключение прогрева ускоряет запуск при инициализации многих сегментов.

  • Более высокие водяные знаки позволяют более плотно использовать кэш, повышая общую емкость нагрузки.

  • TTL кэша автоматически очищает неиспользуемые данные для освобождения локального пространства.

Сценарий 3: гибридное развертывание (смешанное онлайн + офлайн)

Когда использовать

  • Один кластер обслуживает как онлайн, так и аналитические рабочие нагрузки

  • Некоторым коллекциям требуется низкая задержка, для других приоритетом является емкость.

Рекомендуемая стратегия

  • Применяйте конфигурацию реального времени для коллекций, чувствительных к задержкам

  • Применять автономную конфигурацию для аналитических или архивных коллекций

  • Настройте коэффициенты evictableMemoryCacheRatio, cacheTtl и watermark независимо для каждого типа рабочей нагрузки.

Обоснование

Комбинирование конфигураций позволяет осуществлять тонкий контроль над распределением ресурсов.

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

Дополнительные советы по настройке

Аспект

Рекомендация

Объяснение

Область разминки

Предварительно загружайте только поля или индексы с высокой частотой запросов.

Излишняя предварительная загрузка увеличивает время загрузки и потребление ресурсов.

Настройка выселения

Начните с водяных знаков по умолчанию (75-80 %) и постепенно регулируйте их.

Небольшой разрыв приводит к частому вытеснению; большой разрыв задерживает освобождение ресурсов.

TTL кэша

Отключите для стабильных горячих наборов данных; включите (например, 1-3 дня) для динамических данных.

Предотвращает накопление устаревшего кэша, балансируя накладные расходы на очистку.

Коэффициент избыточной коммисии

Избегайте значений > 0,7, если нет большого запаса ресурсов.

Чрезмерный overcommit может привести к переполнению кэша и нестабильной задержке.

Мониторинг

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

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