Melhores práticas para armazenamento em camadasCompatible with Milvus 2.6.4+
O Milvus fornece o armazenamento em camadas para ajudá-lo a lidar eficientemente com dados em grande escala enquanto equilibra a latência da consulta, a capacidade e o uso de recursos. Este guia resume as configurações recomendadas para cargas de trabalho típicas e explica o raciocínio por trás de cada estratégia de ajuste.
Antes de começar
Milvus v2.6.4 ou posterior
Os QueryNodes devem ter recursos locais dedicados (memória e disco). Ambientes compartilhados podem distorcer a estimativa de cache e levar a erros de avaliação de despejo.
Escolha a estratégia certa
O Armazenamento em camadas oferece estratégias flexíveis de carregamento e armazenamento em cache que podem ser combinadas para se adequar à sua carga de trabalho.
Objetivo |
Foco recomendado |
Mecanismo principal |
|---|---|---|
Minimizar a latência da primeira consulta |
Pré-carregar campos críticos |
Aquecimento |
Lidar com dados em grande escala de forma eficiente |
Carregar a pedido |
Carga preguiçosa + carga parcial |
Manter a estabilidade a longo prazo |
Evitar o excesso de cache |
Evicção |
Equilibrar o desempenho e a capacidade |
Combinar pré-carregamento e cache dinâmico |
Configuração híbrida |
Cenário 1: recuperação em tempo real e de baixa latência
Quando utilizar
A latência da consulta é crítica (por exemplo, recomendação em tempo real ou classificação de pesquisa)
Os índices vectoriais principais e os filtros escalares são acedidos frequentemente
O desempenho consistente é mais importante do que a velocidade de inicialização
Configuração recomendada
# 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
Justificativa
O aquecimento elimina a latência de primeiro acesso para índices escalares e vetoriais de alta frequência.
O despejo em segundo plano mantém a pressão estável da cache sem bloquear as consultas.
A desativação do TTL da cache evita recarregamentos desnecessários para dados quentes.
Cenário 2: análise em lote offline
Quando usar
A tolerância à latência da consulta é alta
As cargas de trabalho envolvem conjuntos de dados maciços ou muitos segmentos
A capacidade e a taxa de transferência são priorizadas em relação à capacidade de resposta
Configuração recomendada
# 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
Justificativa
A desativação do warm-up acelera a inicialização ao inicializar muitos segmentos.
Marcas d'água mais altas permitem o uso mais denso do cache, melhorando a capacidade total de carga.
O TTL do cache limpa automaticamente os dados não utilizados para liberar espaço local.
Cenário 3: implantação híbrida (mista online + offline)
Quando utilizar
Um único cluster serve cargas de trabalho online e analíticas
Algumas colecções requerem baixa latência, outras dão prioridade à capacidade
Estratégia recomendada
Aplicar a configuração em tempo real a colecções sensíveis à latência
Aplicar a configuração offline a colecções analíticas ou de arquivo
Ajustar os rácios evictableMemoryCacheRatio, cacheTtl e marca de água de forma independente para cada tipo de carga de trabalho
Fundamentação
A combinação de configurações permite um controlo fino da atribuição de recursos.
As coleções críticas mantêm garantias de baixa latência, enquanto as coleções secundárias podem lidar com mais segmentos e volume de dados.
Dicas de ajuste adicionais
Aspeto |
Recomendação |
Explicação |
|---|---|---|
Escopo de aquecimento |
Apenas pré-carregue campos ou índices com elevada frequência de consulta. |
O pré-carregamento desnecessário aumenta o tempo de carregamento e a utilização de recursos. |
Ajuste de despejo |
Comece com marcas d'água padrão (75-80%) e ajuste gradualmente. |
Um pequeno intervalo provoca despejos frequentes; um grande intervalo atrasa a libertação de recursos. |
TTL da cache |
Desativar para conjuntos de dados quentes estáveis; ativar (por exemplo, 1-3 dias) para dados dinâmicos. |
Evita o acúmulo de cache obsoleto enquanto equilibra a sobrecarga de limpeza. |
Rácio de sobrecompromisso |
Evite valores > 0,7 a menos que o espaço de recursos seja grande. |
O excesso de comprometimento pode causar travamento do cache e latência instável. |
Monitorização |
Acompanhe a taxa de acerto da cache, a utilização de recursos e a frequência de despejo. |
Cargas frias frequentes podem indicar que o aquecimento ou as marcas d'água precisam de ajustes. |